From 22b181154c11cb250a2f7ad9eb7820a462cf3079 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 01 Oct 2012 22:29:42 -0400 Subject: [PATCH] Method to generate fork network graph --- src/com/gitblit/wicket/pages/ForksPage.java | 31 +++++++++++++++++++++---------- 1 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/com/gitblit/wicket/pages/ForksPage.java b/src/com/gitblit/wicket/pages/ForksPage.java index 7b8235b..54c2c82 100644 --- a/src/com/gitblit/wicket/pages/ForksPage.java +++ b/src/com/gitblit/wicket/pages/ForksPage.java @@ -42,26 +42,32 @@ public ForksPage(PageParameters params) { super(params); + UserModel user = GitBlitWebSession.get().getUser(); RepositoryModel model = getRepositoryModel(); - RepositoryModel origin; + RepositoryModel origin = model; List<String> list; if (ArrayUtils.isEmpty(model.forks)) { - // origin repository has forks - origin = GitBlit.self().getRepositoryModel(model.originRepository); - list = new ArrayList<String>(origin.forks); + if (!StringUtils.isEmpty(model.originRepository)) { + // try origin repository + origin = GitBlit.self().getRepositoryModel(model.originRepository); + } + if (origin == null || origin.forks == null) { + list = new ArrayList<String>(); + } else { + list = new ArrayList<String>(origin.forks); + } } else { // this repository has forks - origin = model; list = new ArrayList<String>(model.forks); } if (origin.isPersonalRepository()) { // personal repository - UserModel user = GitBlit.self().getUserModel(origin.projectPath.substring(1)); - PersonIdent ident = new PersonIdent(user.getDisplayName(), user.emailAddress); + UserModel originUser = GitBlit.self().getUserModel(origin.projectPath.substring(1)); + PersonIdent ident = new PersonIdent(originUser.getDisplayName(), originUser.emailAddress); add(new GravatarImage("forkSourceAvatar", ident, 20)); add(new Label("forkSourceSwatch").setVisible(false)); - add(new LinkPanel("forkSourceProject", null, user.getDisplayName(), UserPage.class, WicketUtils.newUsernameParameter(user.username))); + add(new LinkPanel("forkSourceProject", null, originUser.getDisplayName(), UserPage.class, WicketUtils.newUsernameParameter(originUser.username))); } else { // standard repository add(new GravatarImage("forkSourceAvatar", new PersonIdent("", ""), 20).setVisible(false)); @@ -85,10 +91,15 @@ } String source = StringUtils.getLastPathElement(origin.name); - add(new LinkPanel("forkSource", null, StringUtils.stripDotGit(source), SummaryPage.class, WicketUtils.newRepositoryParameter(origin.name))); + if (user != null && user.canViewRepository(origin)) { + // user can view the origin + add(new LinkPanel("forkSource", null, StringUtils.stripDotGit(source), SummaryPage.class, WicketUtils.newRepositoryParameter(origin.name))); + } else { + // user can not view the origin + add(new Label("forkSource", StringUtils.stripDotGit(source))); + } // only display user-accessible forks - UserModel user = GitBlitWebSession.get().getUser(); List<RepositoryModel> forks = new ArrayList<RepositoryModel>(); for (String aFork : list) { RepositoryModel fork = GitBlit.self().getRepositoryModel(user, aFork); -- Gitblit v1.9.1