From 97a71565f6ff5d9722788559ce638863a9e618ab Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 19 Oct 2012 22:47:33 -0400 Subject: [PATCH] New permissions UI for EditRepository (issue 36) --- src/com/gitblit/wicket/pages/EditRepositoryPage.java | 48 +++++++++++++++--------------------------------- 1 files changed, 15 insertions(+), 33 deletions(-) diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java index a2dad10..4e34d89 100644 --- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java @@ -55,6 +55,8 @@ import com.gitblit.GitBlitException; import com.gitblit.Keys; import com.gitblit.models.RepositoryModel; +import com.gitblit.models.TeamAccessPermission; +import com.gitblit.models.UserAccessPermission; import com.gitblit.models.UserModel; import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.StringUtils; @@ -62,6 +64,8 @@ import com.gitblit.wicket.StringChoiceRenderer; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.BulletListPanel; +import com.gitblit.wicket.panels.TeamPermissionsPanel; +import com.gitblit.wicket.panels.UserPermissionsPanel; public class EditRepositoryPage extends RootSubPage { @@ -94,6 +98,7 @@ } setupPage(model); + setStatelessHint(false); } public EditRepositoryPage(PageParameters params) { @@ -103,6 +108,7 @@ String name = WicketUtils.getRepositoryName(params); RepositoryModel model = GitBlit.self().getRepositoryModel(name); setupPage(model); + setStatelessHint(false); } protected void setupPage(final RepositoryModel repositoryModel) { @@ -111,8 +117,8 @@ List<String> indexedBranches = new ArrayList<String>(); List<String> federationSets = new ArrayList<String>(); - List<String> repositoryUsers = new ArrayList<String>(); - List<String> repositoryTeams = new ArrayList<String>(); + final List<UserAccessPermission> repositoryUsers = new ArrayList<UserAccessPermission>(); + final List<TeamAccessPermission> repositoryTeams = new ArrayList<TeamAccessPermission>(); List<String> preReceiveScripts = new ArrayList<String>(); List<String> postReceiveScripts = new ArrayList<String>(); @@ -128,8 +134,8 @@ } else { super.setupPage(getString("gb.edit"), repositoryModel.name); if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) { - repositoryUsers.addAll(GitBlit.self().getRepositoryUsers(repositoryModel)); - repositoryTeams.addAll(GitBlit.self().getRepositoryTeams(repositoryModel)); + repositoryUsers.addAll(GitBlit.self().getUserAccessPermissions(repositoryModel)); + repositoryTeams.addAll(GitBlit.self().getTeamAccessPermissions(repositoryModel)); Collections.sort(repositoryUsers); } federationSets.addAll(repositoryModel.federationSets); @@ -139,15 +145,9 @@ } final String oldName = repositoryModel.name; - // users palette - final Palette<String> usersPalette = new Palette<String>("users", new ListModel<String>( - repositoryUsers), new CollectionModel<String>(GitBlit.self().getAllUsernames()), - new StringChoiceRenderer(), 10, false); - // teams palette - final Palette<String> teamsPalette = new Palette<String>("teams", new ListModel<String>( - repositoryTeams), new CollectionModel<String>(GitBlit.self().getAllTeamnames()), - new StringChoiceRenderer(), 8, false); + UserPermissionsPanel usersPalette = new UserPermissionsPanel("users", repositoryUsers, getAccessPermissions()); + TeamPermissionsPanel teamsPalette = new TeamPermissionsPanel("teams", repositoryTeams, getAccessPermissions()); // indexed local branches palette List<String> allLocalBranches = new ArrayList<String>(); @@ -342,28 +342,10 @@ // save the repository GitBlit.self().updateRepositoryModel(oldName, repositoryModel, isCreate); - // repository access + // repository access permissions if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) { - // save the user access list - Iterator<String> users = usersPalette.getSelectedChoices(); - List<String> repositoryUsers = new ArrayList<String>(); - while (users.hasNext()) { - repositoryUsers.add(users.next()); - } - // ensure the owner is added to the user list - if (repositoryModel.owner != null - && !repositoryUsers.contains(repositoryModel.owner)) { - repositoryUsers.add(repositoryModel.owner); - } - GitBlit.self().setRepositoryUsers(repositoryModel, repositoryUsers); - - // save the team access list - Iterator<String> teams = teamsPalette.getSelectedChoices(); - List<String> repositoryTeams = new ArrayList<String>(); - while (teams.hasNext()) { - repositoryTeams.add(teams.next()); - } - GitBlit.self().setRepositoryTeams(repositoryModel, repositoryTeams); + GitBlit.self().setUserAccessPermissions(repositoryModel, repositoryUsers); + GitBlit.self().setTeamAccessPermissions(repositoryModel, repositoryTeams); } } catch (GitBlitException e) { error(e.getMessage()); -- Gitblit v1.9.1