From 99b43dffe86b635e97f625157083cee37ee921bf Mon Sep 17 00:00:00 2001 From: peto268 <peto268@gmail.com> Date: Thu, 08 May 2014 13:40:41 -0400 Subject: [PATCH] Added option to disable deleting of non empty repositories through the user interface --- src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java | 30 +++++++++++++++++++++++------- 1 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java index a0f8ac4..2c84ac0 100644 --- a/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java +++ b/src/main/java/com/gitblit/wicket/panels/ProjectRepositoryPanel.java @@ -145,20 +145,36 @@ @Override public void onClick() { - if (app().repositories().deleteRepositoryModel(entry)) { + // refresh the model + RepositoryModel model = app().repositories().getRepositoryModel(entry.name); + if (isDeleteAllowed(model) && + app().repositories().deleteRepositoryModel(model)) { // redirect to the owning page - if (entry.isPersonalRepository()) { - setResponsePage(getPage().getClass(), WicketUtils.newUsernameParameter(entry.projectPath.substring(1))); + if (model.isPersonalRepository()) { + setResponsePage(getPage().getClass(), WicketUtils.newUsernameParameter(model.projectPath.substring(1))); } else { - setResponsePage(getPage().getClass(), WicketUtils.newProjectParameter(entry.projectPath)); + setResponsePage(getPage().getClass(), WicketUtils.newProjectParameter(model.projectPath)); } } else { - error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), entry)); + error(MessageFormat.format(getString("gb.repositoryDeleteFailed"), model)); } } + + @Override + public boolean isEnabled() { + return isDeleteAllowed(entry); + } + + private boolean isDeleteAllowed( + final RepositoryModel model) { + return app().settings().getBoolean(Keys.web.allowDeletingNonEmptyRepositories, true) + || !model.hasCommits; + } }; - deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format( - localizer.getString("gb.deleteRepository", parent), entry))); + if (deleteLink.isEnabled()) { + deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format( + localizer.getString("gb.deleteRepository", parent), entry))); + } repositoryLinks.add(deleteLink); } } else { -- Gitblit v1.9.1