| | |
| | | */
|
| | | package com.gitblit.wicket.panels;
|
| | |
|
| | | import java.text.MessageFormat;
|
| | | import java.util.Map;
|
| | |
|
| | | import org.apache.wicket.Component;
|
| | |
| | | import org.apache.wicket.markup.html.basic.Label;
|
| | | import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
| | | import org.apache.wicket.markup.html.link.ExternalLink;
|
| | | import org.apache.wicket.markup.html.link.Link;
|
| | | import org.apache.wicket.markup.html.panel.Fragment;
|
| | |
|
| | | import com.gitblit.Constants.AccessRestrictionType;
|
| | |
| | | user = UserModel.ANONYMOUS;
|
| | | }
|
| | | Fragment repositoryLinks;
|
| | | boolean showOwner = entry.isOwner(user.username);
|
| | | // owner of personal repository gets admin powers
|
| | | boolean showAdmin = isAdmin || entry.isUsersPersonalRepository(user.username);
|
| | |
|
| | | if (showAdmin || showOwner) {
|
| | | repositoryLinks = new Fragment("repositoryLinks", showAdmin ? "repositoryAdminLinks"
|
| | | : "repositoryOwnerLinks", this);
|
| | | if (user.canAdmin(entry)) {
|
| | | repositoryLinks = new Fragment("repositoryLinks", "repositoryOwnerLinks", this);
|
| | | repositoryLinks.add(new BookmarkablePageLink<Void>("editRepository", EditRepositoryPage.class,
|
| | | WicketUtils.newRepositoryParameter(entry.name)));
|
| | | if (showAdmin) {
|
| | | Link<Void> deleteLink = new Link<Void>("deleteRepository") {
|
| | |
|
| | | private static final long serialVersionUID = 1L;
|
| | |
|
| | | @Override
|
| | | public void onClick() {
|
| | | // refresh the model
|
| | | RepositoryModel model = app().repositories().getRepositoryModel(entry.name);
|
| | | if (isDeleteAllowed(model) &&
|
| | | app().repositories().deleteRepositoryModel(model)) {
|
| | | // redirect to the owning page
|
| | | if (model.isPersonalRepository()) {
|
| | | setResponsePage(getPage().getClass(), WicketUtils.newUsernameParameter(model.projectPath.substring(1)));
|
| | | } else {
|
| | | setResponsePage(getPage().getClass(), WicketUtils.newProjectParameter(model.projectPath));
|
| | | }
|
| | | } else {
|
| | | 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;
|
| | | }
|
| | | };
|
| | | if (deleteLink.isEnabled()) {
|
| | | deleteLink.add(new JavascriptEventConfirmation("onclick", MessageFormat.format(
|
| | | localizer.getString("gb.deleteRepository", parent), entry)));
|
| | | }
|
| | | repositoryLinks.add(deleteLink);
|
| | | }
|
| | | } else {
|
| | | repositoryLinks = new Fragment("repositoryLinks", "repositoryUserLinks", this);
|
| | | }
|