From 6c5511020457c39961d069071ac60f7140ec724f Mon Sep 17 00:00:00 2001 From: Lukasz Jader <ljaderdev@gmail.com> Date: Wed, 19 Sep 2012 16:24:10 -0400 Subject: [PATCH] Update polish translation of EmptyRepositoryPage --- src/com/gitblit/wicket/pages/RepositoryPage.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 100 insertions(+), 4 deletions(-) diff --git a/src/com/gitblit/wicket/pages/RepositoryPage.java b/src/com/gitblit/wicket/pages/RepositoryPage.java index 4b5e28d..7e21911 100644 --- a/src/com/gitblit/wicket/pages/RepositoryPage.java +++ b/src/com/gitblit/wicket/pages/RepositoryPage.java @@ -19,9 +19,12 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.wicket.Component; import org.apache.wicket.PageParameters; @@ -45,6 +48,7 @@ import com.gitblit.PagesServlet; import com.gitblit.SyndicationServlet; import com.gitblit.models.RepositoryModel; +import com.gitblit.models.SubmoduleModel; import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.StringUtils; @@ -60,20 +64,28 @@ public abstract class RepositoryPage extends BasePage { + protected final String projectName; protected final String repositoryName; protected final String objectId; - + private transient Repository r; private RepositoryModel m; + private Map<String, SubmoduleModel> submodules; + private final Map<String, PageRegistration> registeredPages; public RepositoryPage(PageParameters params) { super(params); repositoryName = WicketUtils.getRepositoryName(params); + if (repositoryName.indexOf('/') > -1) { + projectName = repositoryName.substring(0, repositoryName.indexOf('/')); + } else { + projectName = GitBlit.getString(Keys.web.repositoryRootGroupName, "main"); + } objectId = WicketUtils.getObject(params); - + if (StringUtils.isEmpty(repositoryName)) { error(MessageFormat.format(getString("gb.repositoryNotSpecifiedFor"), getPageName()), true); } @@ -111,6 +123,7 @@ // standard links pages.put("repositories", new PageRegistration("gb.repositories", RepositoriesPage.class)); + pages.put("project", new PageRegistration("gb.project", ProjectPage.class, WicketUtils.newProjectParameter(projectName))); pages.put("summary", new PageRegistration("gb.summary", SummaryPage.class, params)); pages.put("log", new PageRegistration("gb.log", LogPage.class, params)); pages.put("branches", new PageRegistration("gb.branches", BranchesPage.class, params)); @@ -145,7 +158,7 @@ if (showAdmin || GitBlitWebSession.get().isLoggedIn() && (model.owner != null && model.owner.equalsIgnoreCase(GitBlitWebSession.get() - .getUser().username))) { + .getUsername()))) { pages.put("edit", new PageRegistration("gb.edit", EditRepositoryPage.class, params)); } return pages; @@ -192,7 +205,13 @@ RepositoryModel model = GitBlit.self().getRepositoryModel( GitBlitWebSession.get().getUser(), repositoryName); if (model == null) { - authenticationError(getString("gb.unauthorizedAccessForRepository") + " " + repositoryName); + if (GitBlit.self().hasRepository(repositoryName)) { + // has repository, but unauthorized + authenticationError(getString("gb.unauthorizedAccessForRepository") + " " + repositoryName); + } else { + // does not have repository + error(getString("gb.canNotLoadRepository") + " " + repositoryName, true); + } return null; } m = model; @@ -206,8 +225,85 @@ error(MessageFormat.format(getString("gb.failedToFindCommit"), objectId, repositoryName, getPageName()), true); } + getSubmodules(commit); return commit; } + + private Map<String, SubmoduleModel> getSubmodules(RevCommit commit) { + if (submodules == null) { + submodules = new HashMap<String, SubmoduleModel>(); + for (SubmoduleModel model : JGitUtils.getSubmodules(r, commit.getTree())) { + submodules.put(model.path, model); + } + } + return submodules; + } + + protected Map<String, SubmoduleModel> getSubmodules() { + return submodules; + } + + protected SubmoduleModel getSubmodule(String path) { + SubmoduleModel model = submodules.get(path); + if (model == null) { + // undefined submodule?! + model = new SubmoduleModel(path.substring(path.lastIndexOf('/') + 1), path, path); + model.hasSubmodule = false; + model.gitblitPath = model.name; + return model; + } else { + // extract the repository name from the clone url + List<String> patterns = GitBlit.getStrings(Keys.git.submoduleUrlPatterns); + String submoduleName = StringUtils.extractRepositoryPath(model.url, patterns.toArray(new String[0])); + + // determine the current path for constructing paths relative + // to the current repository + String currentPath = ""; + if (repositoryName.indexOf('/') > -1) { + currentPath = repositoryName.substring(0, repositoryName.lastIndexOf('/') + 1); + } + + // try to locate the submodule repository + // prefer bare to non-bare names + List<String> candidates = new ArrayList<String>(); + + // relative + candidates.add(currentPath + StringUtils.stripDotGit(submoduleName)); + candidates.add(candidates.get(candidates.size() - 1) + ".git"); + + // relative, no subfolder + if (submoduleName.lastIndexOf('/') > -1) { + String name = submoduleName.substring(submoduleName.lastIndexOf('/') + 1); + candidates.add(currentPath + StringUtils.stripDotGit(name)); + candidates.add(currentPath + candidates.get(candidates.size() - 1) + ".git"); + } + + // absolute + candidates.add(StringUtils.stripDotGit(submoduleName)); + candidates.add(candidates.get(candidates.size() - 1) + ".git"); + + // absolute, no subfolder + if (submoduleName.lastIndexOf('/') > -1) { + String name = submoduleName.substring(submoduleName.lastIndexOf('/') + 1); + candidates.add(StringUtils.stripDotGit(name)); + candidates.add(candidates.get(candidates.size() - 1) + ".git"); + } + + // create a unique, ordered set of candidate paths + Set<String> paths = new LinkedHashSet<String>(candidates); + for (String candidate : paths) { + if (GitBlit.self().hasRepository(candidate)) { + model.hasSubmodule = true; + model.gitblitPath = candidate; + return model; + } + } + + // we do not have a copy of the submodule, but we need a path + model.gitblitPath = candidates.get(0); + return model; + } + } protected String getShortObjectId(String objectId) { return objectId.substring(0, 8); -- Gitblit v1.9.1