James Moger
2011-12-28 abeaaf77673e9e764fe68e398eeda1e3c3c22ea5
Show additional columns in users and teams tables
10 files modified
202 ■■■■ changed files
src/com/gitblit/ConfigUserService.java 29 ●●●●● patch | view | raw | blame | history
src/com/gitblit/FileUserService.java 32 ●●●●● patch | view | raw | blame | history
src/com/gitblit/GitBlit.java 24 ●●●●● patch | view | raw | blame | history
src/com/gitblit/GitblitUserService.java 10 ●●●●● patch | view | raw | blame | history
src/com/gitblit/IUserService.java 19 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/GitBlitWebApp.properties 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/TeamsPanel.html 6 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/TeamsPanel.java 35 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/UsersPanel.html 10 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/UsersPanel.java 35 ●●●●● patch | view | raw | blame | history
src/com/gitblit/ConfigUserService.java
@@ -313,6 +313,21 @@
    }
    /**
     * Returns the list of all teams available to the login service.
     *
     * @return list of all teams
     * @since 0.8.0
     */
    @Override
    public List<TeamModel> getAllTeams() {
        read();
        List<TeamModel> list = new ArrayList<TeamModel>(teams.values());
        list = DeepCopier.copy(list);
        Collections.sort(list);
        return list;
    }
    /**
     * Returns the list of all users who are allowed to bypass the access
     * restriction placed on the specified repository.
     * 
@@ -478,6 +493,20 @@
        Collections.sort(list);
        return list;
    }
    /**
     * Returns the list of all users available to the login service.
     *
     * @return list of all usernames
     */
    @Override
    public List<UserModel> getAllUsers() {
        read();
        List<UserModel> list = new ArrayList<UserModel>(users.values());
        list = DeepCopier.copy(list);
        Collections.sort(list);
        return list;
    }
    /**
     * Returns the list of all users who are allowed to bypass the access
src/com/gitblit/FileUserService.java
@@ -340,6 +340,22 @@
    }
    /**
     * Returns the list of all users available to the login service.
     *
     * @return list of all usernames
     */
    @Override
    public List<UserModel> getAllUsers() {
        read();
        List<UserModel> list = new ArrayList<UserModel>();
        for (String username : getAllUsernames()) {
            list.add(getUserModel(username));
        }
        Collections.sort(list);
        return list;
    }
    /**
     * Returns the list of all users who are allowed to bypass the access
     * restriction placed on the specified repository.
     * 
@@ -670,6 +686,20 @@
    }
    /**
     * Returns the list of all teams available to the login service.
     *
     * @return list of all teams
     * @since 0.8.0
     */
    @Override
    public List<TeamModel> getAllTeams() {
        List<TeamModel> list = new ArrayList<TeamModel>(teams.values());
        list = DeepCopier.copy(list);
        Collections.sort(list);
        return list;
    }
    /**
     * Returns the list of all teams who are allowed to bypass the access
     * restriction placed on the specified repository.
     * 
@@ -757,7 +787,7 @@
            // remove role from team
            for (String name : needsRemoveRole) {
                String team = "@" + name;
                String[] values = allUsers.getProperty(team).split(",");
                String[] values = allUsers.getProperty(team).split(",");
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < values.length; i++) {
                    String value = values[i];
src/com/gitblit/GitBlit.java
@@ -449,8 +449,18 @@
     */
    public List<String> getAllUsernames() {
        List<String> names = new ArrayList<String>(userService.getAllUsernames());
        Collections.sort(names);
        return names;
    }
    /**
     * Returns the list of all users available to the login service.
     *
     * @see IUserService.getAllUsernames()
     * @return list of all usernames
     */
    public List<UserModel> getAllUsers() {
        List<UserModel> users = userService.getAllUsers();
        return users;
    }
    /**
@@ -533,7 +543,17 @@
     */
    public List<String> getAllTeamnames() {
        List<String> teams = new ArrayList<String>(userService.getAllTeamNames());
        Collections.sort(teams);
        return teams;
    }
    /**
     * Returns the list of available teams that a user or repository may be
     * assigned to.
     *
     * @return the list of teams
     */
    public List<TeamModel> getAllTeams() {
        List<TeamModel> teams = userService.getAllTeams();
        return teams;
    }
src/com/gitblit/GitblitUserService.java
@@ -162,11 +162,21 @@
    }
    @Override
    public List<UserModel> getAllUsers() {
        return serviceImpl.getAllUsers();
    }
    @Override
    public List<String> getAllTeamNames() {
        return serviceImpl.getAllTeamNames();
    }
    @Override
    public List<TeamModel> getAllTeams() {
        return serviceImpl.getAllTeams();
    }
    @Override
    public List<String> getTeamnamesForRepositoryRole(String role) {
        return serviceImpl.getTeamnamesForRepositoryRole(role);
    }
src/com/gitblit/IUserService.java
@@ -121,6 +121,14 @@
     * @return list of all usernames
     */
    List<String> getAllUsernames();
    /**
     * Returns the list of all users available to the login service.
     *
     * @return list of all users
     * @since 0.8.0
     */
    List<UserModel> getAllUsers();
    /**
     * Returns the list of all teams available to the login service.
@@ -131,12 +139,21 @@
    List<String> getAllTeamNames();
    
    /**
     * Returns the list of all teams available to the login service.
     *
     * @return list of all teams
     * @since 0.8.0
     */
    List<TeamModel> getAllTeams();
    /**
     * Returns the list of all users who are allowed to bypass the access
     * restriction placed on the specified repository.
     * 
     * @param role
     *            the repository name
     * @return list of all usernames that can bypass the access restriction
     * @since 0.8.0
     */    
    List<String> getTeamnamesForRepositoryRole(String role);
@@ -148,6 +165,7 @@
     *            the repository name
     * @param teamnames
     * @return true if successful
     * @since 0.8.0
     */    
    boolean setTeamnamesForRepositoryRole(String role, List<String> teamnames);
    
@@ -207,6 +225,7 @@
     * @param role
     *            the repository name
     * @return list of all usernames that can bypass the access restriction
     * @since 0.8.0
     */
    List<String> getUsernamesForRepositoryRole(String role);
src/com/gitblit/wicket/GitBlitWebApp.properties
@@ -207,4 +207,4 @@
gb.accessPermissionsForUserDescription = set team memberships or grant access to specific restricted repositories
gb.accessPermissionsForTeamDescription = set team members and grant access to specific restricted repositories
gb.federationRepositoryDescription = share this repository with other Gitblit servers
gb.hookScriptsDescription = run custom scripts on pushes to this Gitblit server
gb.hookScriptsDescription = run Groovy scripts on pushes to this Gitblit server
src/com/gitblit/wicket/panels/TeamsPanel.html
@@ -15,11 +15,15 @@
                <img style="vertical-align: middle; border: 1px solid #888; background-color: white;" src="users_16x16.png"/>
                <wicket:message key="gb.teams">[teams]</wicket:message>
            </th>
            <th class="right"></th>
            <th style="width:140px;"><wicket:message key="gb.teamMembers">[team members]</wicket:message></th>
            <th style="width:100px;"><wicket:message key="gb.repositories">[repositories]</wicket:message></th>
            <th style="width:80px;" class="right"></th>
        </tr>
        <tbody>        
               <tr wicket:id="teamRow">
                   <td class="left" ><div class="list" wicket:id="teamname">[teamname]</div></td>
                   <td class="left" ><div class="list" wicket:id="members">[members]</div></td>
                   <td class="left" ><div class="list" wicket:id="repositories">[repositories]</div></td>
                   <td class="rightAlign"><span wicket:id="teamLinks"></span></td>                  
               </tr>
        </tbody>
src/com/gitblit/wicket/panels/TeamsPanel.java
@@ -18,6 +18,7 @@
import java.text.MessageFormat;
import java.util.List;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Fragment;
@@ -26,6 +27,7 @@
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import com.gitblit.GitBlit;
import com.gitblit.models.TeamModel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.pages.EditTeamPage;
@@ -40,9 +42,9 @@
        adminLinks.add(new BookmarkablePageLink<Void>("newTeam", EditTeamPage.class));
        add(adminLinks.setVisible(showAdmin));
        final List<String> teamnames = GitBlit.self().getAllTeamnames();
        DataView<String> teamsView = new DataView<String>("teamRow", new ListDataProvider<String>(
                teamnames)) {
        final List<TeamModel> teams = GitBlit.self().getAllTeams();
        DataView<TeamModel> teamsView = new DataView<TeamModel>("teamRow",
                new ListDataProvider<TeamModel>(teams)) {
            private static final long serialVersionUID = 1L;
            private int counter;
@@ -52,31 +54,36 @@
                counter = 0;
            }
            public void populateItem(final Item<String> item) {
                final String entry = item.getModelObject();
                LinkPanel editLink = new LinkPanel("teamname", "list", entry, EditTeamPage.class,
                        WicketUtils.newTeamnameParameter(entry));
                WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry);
            public void populateItem(final Item<TeamModel> item) {
                final TeamModel entry = item.getModelObject();
                LinkPanel editLink = new LinkPanel("teamname", "list", entry.name,
                        EditTeamPage.class, WicketUtils.newTeamnameParameter(entry.name));
                WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry.name);
                item.add(editLink);
                item.add(new Label("members", entry.users.size() > 0 ? ("" + entry.users.size())
                        : ""));
                item.add(new Label("repositories",
                        entry.repositories.size() > 0 ? ("" + entry.repositories.size()) : ""));
                Fragment teamLinks = new Fragment("teamLinks", "teamAdminLinks", this);
                teamLinks.add(new BookmarkablePageLink<Void>("editTeam", EditTeamPage.class,
                        WicketUtils.newTeamnameParameter(entry)));
                        WicketUtils.newTeamnameParameter(entry.name)));
                Link<Void> deleteLink = new Link<Void>("deleteTeam") {
                    private static final long serialVersionUID = 1L;
                    @Override
                    public void onClick() {
                        if (GitBlit.self().deleteTeam(entry)) {
                            teamnames.remove(entry);
                            info(MessageFormat.format("Team ''{0}'' deleted.", entry));
                        if (GitBlit.self().deleteTeam(entry.name)) {
                            teams.remove(entry);
                            info(MessageFormat.format("Team ''{0}'' deleted.", entry.name));
                        } else {
                            error(MessageFormat.format("Failed to delete team ''{0}''!", entry));
                            error(MessageFormat
                                    .format("Failed to delete team ''{0}''!", entry.name));
                        }
                    }
                };
                deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
                        "Delete team \"{0}\"?", entry)));
                        "Delete team \"{0}\"?", entry.name)));
                teamLinks.add(deleteLink);
                item.add(teamLinks);
src/com/gitblit/wicket/panels/UsersPanel.html
@@ -15,11 +15,17 @@
                <img style="vertical-align: middle; border: 1px solid #888; background-color: white;" src="user_16x16.png"/>
                <wicket:message key="gb.users">[users]</wicket:message>
            </th>
            <th class="right"></th>
            <th style="width:120px;"><wicket:message key="gb.accessLevel">[access level]</wicket:message></th>
            <th style="width:140px;"><wicket:message key="gb.teamMemberships">[team memberships]</wicket:message></th>
            <th style="width:100px;"><wicket:message key="gb.repositories">[repositories]</wicket:message></th>
            <th style="width:80px;" class="right"></th>
        </tr>
        <tbody>        
               <tr wicket:id="userRow">
                   <td class="left" ><div class="list" wicket:id="username">[username]</div></td>
                   <td class="left" ><span class="list" wicket:id="username">[username]</span></td>
                   <td class="left" ><span class="list" wicket:id="accesslevel">[access level]</span></td>
                   <td class="left" ><span class="list" wicket:id="teams">[team memberships]</span></td>
                   <td class="left" ><span class="list" wicket:id="repositories">[repositories]</span></td>
                   <td class="rightAlign"><span wicket:id="userLinks"></span></td>                  
               </tr>
        </tbody>
src/com/gitblit/wicket/panels/UsersPanel.java
@@ -18,6 +18,7 @@
import java.text.MessageFormat;
import java.util.List;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Fragment;
@@ -26,6 +27,7 @@
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import com.gitblit.GitBlit;
import com.gitblit.models.UserModel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.pages.EditUserPage;
@@ -40,9 +42,9 @@
        adminLinks.add(new BookmarkablePageLink<Void>("newUser", EditUserPage.class));
        add(adminLinks.setVisible(showAdmin));
        final List<String> usernames = GitBlit.self().getAllUsernames();
        DataView<String> usersView = new DataView<String>("userRow", new ListDataProvider<String>(
                usernames)) {
        final List<UserModel> users = GitBlit.self().getAllUsers();
        DataView<UserModel> usersView = new DataView<UserModel>("userRow",
                new ListDataProvider<UserModel>(users)) {
            private static final long serialVersionUID = 1L;
            private int counter;
@@ -52,31 +54,36 @@
                counter = 0;
            }
            public void populateItem(final Item<String> item) {
                final String entry = item.getModelObject();
                LinkPanel editLink = new LinkPanel("username", "list", entry, EditUserPage.class,
                        WicketUtils.newUsernameParameter(entry));
                WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry);
            public void populateItem(final Item<UserModel> item) {
                final UserModel entry = item.getModelObject();
                LinkPanel editLink = new LinkPanel("username", "list", entry.username,
                        EditUserPage.class, WicketUtils.newUsernameParameter(entry.username));
                WicketUtils.setHtmlTooltip(editLink, getString("gb.edit") + " " + entry.username);
                item.add(editLink);
                item.add(new Label("accesslevel", entry.canAdmin ? "administrator" : ""));
                item.add(new Label("teams", entry.teams.size() > 0 ? ("" + entry.teams.size()) : ""));
                item.add(new Label("repositories",
                        entry.repositories.size() > 0 ? ("" + entry.repositories.size()) : ""));
                Fragment userLinks = new Fragment("userLinks", "userAdminLinks", this);
                userLinks.add(new BookmarkablePageLink<Void>("editUser", EditUserPage.class,
                        WicketUtils.newUsernameParameter(entry)));
                        WicketUtils.newUsernameParameter(entry.username)));
                Link<Void> deleteLink = new Link<Void>("deleteUser") {
                    private static final long serialVersionUID = 1L;
                    @Override
                    public void onClick() {
                        if (GitBlit.self().deleteUser(entry)) {
                            usernames.remove(entry);
                            info(MessageFormat.format("User ''{0}'' deleted.", entry));
                        if (GitBlit.self().deleteUser(entry.username)) {
                            users.remove(entry);
                            info(MessageFormat.format("User ''{0}'' deleted.", entry.username));
                        } else {
                            error(MessageFormat.format("Failed to delete user ''{0}''!", entry));
                            error(MessageFormat.format("Failed to delete user ''{0}''!",
                                    entry.username));
                        }
                    }
                };
                deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
                        "Delete user \"{0}\"?", entry)));
                        "Delete user \"{0}\"?", entry.username)));
                userLinks.add(deleteLink);
                item.add(userLinks);