From edeab95cac16e5f17cfcd75a9969d8708bf360ab Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 12 May 2014 09:22:04 -0400 Subject: [PATCH] Documentation --- src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java | 77 ++++++++++++++++++++++++++++++++++---- 1 files changed, 68 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/main/java/com/gitblit/wicket/pages/EditRepositoryPage.java index c4f480b..412c0ec 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; @@ -49,6 +50,7 @@ import org.apache.wicket.model.Model; import org.apache.wicket.model.util.CollectionModel; import org.apache.wicket.model.util.ListModel; +import org.eclipse.jgit.lib.Repository; import com.gitblit.Constants; import com.gitblit.Constants.AccessRestrictionType; @@ -67,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; @@ -338,7 +341,9 @@ // set author metric exclusions String ax = metricAuthorExclusions.getObject(); - if (!StringUtils.isEmpty(ax)) { + if (StringUtils.isEmpty(ax)) { + repositoryModel.metricAuthorExclusions = new ArrayList<String>(); + } else { Set<String> list = new HashSet<String>(); for (String exclusion : StringUtils.getStringsFromValue(ax, " ")) { if (StringUtils.isEmpty(exclusion)) { @@ -355,7 +360,9 @@ // set mailing lists String ml = mailingLists.getObject(); - if (!StringUtils.isEmpty(ml)) { + if (StringUtils.isEmpty(ml)) { + repositoryModel.mailingLists = new ArrayList<String>(); + } else { Set<String> list = new HashSet<String>(); for (String address : ml.split("(,|\\s)")) { if (StringUtils.isEmpty(address)) { @@ -410,19 +417,23 @@ } // save the repository - app().repositories().updateRepositoryModel(oldName, repositoryModel, isCreate); + app().gitblit().updateRepositoryModel(oldName, repositoryModel, isCreate); // repository access permissions if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) { - app().repositories().setUserAccessPermissions(repositoryModel, repositoryUsers); - app().repositories().setTeamAccessPermissions(repositoryModel, repositoryTeams); + app().gitblit().setUserAccessPermissions(repositoryModel, repositoryUsers); + app().gitblit().setTeamAccessPermissions(repositoryModel, repositoryTeams); } } catch (GitBlitException e) { error(e.getMessage()); return; } setRedirect(false); - setResponsePage(RepositoriesPage.class); + if (isCreate) { + setResponsePage(RepositoriesPage.class); + } else { + setResponsePage(SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryModel.name)); + } } }; @@ -443,8 +454,16 @@ // allow relinking HEAD to a branch or tag other than master on edit repository List<String> availableRefs = new ArrayList<String>(); + List<String> availableBranches = new ArrayList<String>(); if (!ArrayUtils.isEmpty(repositoryModel.availableRefs)) { - availableRefs.addAll(repositoryModel.availableRefs); + for (String ref : repositoryModel.availableRefs) { + if (!ref.startsWith(Constants.R_TICKET)) { + availableRefs.add(ref); + if (ref.startsWith(Constants.R_HEADS)) { + availableBranches.add(Repository.shortenRefName(ref)); + } + } + } } form.add(new DropDownChoice<String>("HEAD", availableRefs).setEnabled(availableRefs.size() > 0)); @@ -466,11 +485,15 @@ } form.add(new DropDownChoice<FederationStrategy>("federationStrategy", federationStrategies, new FederationTypeRenderer())); + form.add(new CheckBox("acceptNewPatchsets")); + form.add(new CheckBox("acceptNewTickets")); + form.add(new CheckBox("requireApproval")); + form.add(new DropDownChoice<String>("mergeTo", availableBranches).setEnabled(availableBranches.size() > 0)); form.add(new CheckBox("useIncrementalPushTags")); form.add(new CheckBox("showRemoteBranches")); form.add(new CheckBox("skipSizeCalculation")); form.add(new CheckBox("skipSummaryMetrics")); - List<Integer> maxActivityCommits = Arrays.asList(-1, 0, 25, 50, 75, 100, 150, 200, 250, 500 ); + List<Integer> maxActivityCommits = Arrays.asList(-1, 0, 25, 50, 75, 100, 150, 200, 250, 500); form.add(new DropDownChoice<Integer>("maxActivityCommits", maxActivityCommits, new MaxActivityCommitsRenderer())); metricAuthorExclusions = new Model<String>(ArrayUtils.isEmpty(repositoryModel.metricAuthorExclusions) ? "" @@ -583,12 +606,48 @@ @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)); + 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