From 2c50880dbd5de292e37d2533fccfcb62f6be9f95 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 03 Jun 2014 10:34:51 -0400 Subject: [PATCH] Extract authorization/access selection panel to re-usable class --- src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java index 1f37763..c18cd51 100644 --- a/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java +++ b/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java @@ -42,6 +42,7 @@ import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.markup.html.form.RadioChoice; import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.CompoundPropertyModel; @@ -68,6 +69,7 @@ import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.StringChoiceRenderer; import com.gitblit.wicket.WicketUtils; +import com.gitblit.wicket.panels.BasePanel.JavascriptEventConfirmation; import com.gitblit.wicket.panels.BulletListPanel; import com.gitblit.wicket.panels.RegistrantPermissionsPanel; @@ -427,7 +429,7 @@ return; } setRedirect(false); - setResponsePage(RepositoriesPage.class); + setResponsePage(SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryModel.name)); } }; @@ -600,12 +602,56 @@ @Override public void onSubmit() { - setResponsePage(RepositoriesPage.class); + if (isCreate) { + setResponsePage(RepositoriesPage.class); + } else { + setResponsePage(SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryModel.name)); + } } }; cancel.setDefaultFormProcessing(false); form.add(cancel); + // the user can delete if deletions are allowed AND the user is an admin or the personal owner + // assigned ownership is not sufficient to allow deletion + boolean canDelete = !isCreate && app().repositories().canDelete(repositoryModel) + && (user.canAdmin() || user.isMyPersonalRepository(repositoryModel.name)); + + Link<Void> delete = new Link<Void>("delete") { + + private static final long serialVersionUID = 1L; + + @Override + public void onClick() { + RepositoryModel latestModel = app().repositories().getRepositoryModel(repositoryModel.name); + boolean canDelete = app().repositories().canDelete(latestModel); + if (canDelete) { + if (app().repositories().deleteRepositoryModel(latestModel)) { + info(MessageFormat.format(getString("gb.repositoryDeleted"), latestModel)); + if (latestModel.isPersonalRepository()) { + // redirect to user's profile page + String prefix = app().settings().getString(Keys.git.userRepositoryPrefix, "~"); + String username = latestModel.projectPath.substring(prefix.length()); + setResponsePage(UserPage.class, WicketUtils.newUsernameParameter(username)); + } else { + // redirect to server repositories page + setResponsePage(RepositoriesPage.class); + } + } else { + error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), latestModel)); + } + } else { + error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), latestModel)); + } + } + }; + + if (canDelete) { + delete.add(new JavascriptEventConfirmation("onclick", MessageFormat.format( + getString("gb.deleteRepository"), repositoryModel))); + } + form.add(delete.setVisible(canDelete)); + add(form); } -- Gitblit v1.9.1