| | |
| | | import org.apache.wicket.markup.repeater.data.ListDataProvider;
|
| | | import org.eclipse.jgit.lib.PersonIdent;
|
| | |
|
| | | import com.gitblit.GitBlit;
|
| | | import com.gitblit.Keys;
|
| | | import com.gitblit.models.ForkModel;
|
| | | import com.gitblit.models.RepositoryModel;
|
| | |
| | | import com.gitblit.utils.StringUtils;
|
| | | import com.gitblit.wicket.GitBlitWebSession;
|
| | | import com.gitblit.wicket.WicketUtils;
|
| | | import com.gitblit.wicket.panels.GravatarImage;
|
| | | import com.gitblit.wicket.panels.AvatarImage;
|
| | | import com.gitblit.wicket.panels.LinkPanel;
|
| | |
|
| | | public class ForksPage extends RepositoryPage {
|
| | |
|
| | | public ForksPage(PageParameters params) {
|
| | | super(params);
|
| | | |
| | |
|
| | | final RepositoryModel pageRepository = getRepositoryModel();
|
| | | |
| | | ForkModel root = GitBlit.self().getForkNetwork(pageRepository.name);
|
| | |
|
| | | ForkModel root = app().repositories().getForkNetwork(pageRepository.name);
|
| | | List<FlatFork> network = flatten(root);
|
| | | |
| | |
|
| | | ListDataProvider<FlatFork> forksDp = new ListDataProvider<FlatFork>(network);
|
| | | DataView<FlatFork> forksList = new DataView<FlatFork>("fork", forksDp) {
|
| | | private static final long serialVersionUID = 1L;
|
| | |
|
| | | @Override
|
| | | public void populateItem(final Item<FlatFork> item) {
|
| | | FlatFork fork = item.getModelObject();
|
| | | RepositoryModel repository = fork.repository;
|
| | | |
| | |
|
| | | if (repository.isPersonalRepository()) {
|
| | | UserModel user = GitBlit.self().getUserModel(repository.projectPath.substring(1));
|
| | | UserModel user = app().users().getUserModel(repository.projectPath.substring(1));
|
| | | if (user == null) {
|
| | | // user account no longer exists
|
| | | user = new UserModel(repository.projectPath.substring(1));
|
| | | }
|
| | | PersonIdent ident = new PersonIdent(user.getDisplayName(), user.emailAddress == null ? user.getDisplayName() : user.emailAddress);
|
| | | item.add(new GravatarImage("anAvatar", ident, 20));
|
| | | item.add(new AvatarImage("anAvatar", ident, 20));
|
| | | if (pageRepository.equals(repository)) {
|
| | | // do not link to self
|
| | | item.add(new Label("aProject", user.getDisplayName()));
|
| | |
| | | item.add(swatch);
|
| | | String projectName = repository.projectPath;
|
| | | if (StringUtils.isEmpty(projectName)) {
|
| | | projectName = GitBlit.getString(Keys.web.repositoryRootGroupName, "main");
|
| | | projectName = app().settings().getString(Keys.web.repositoryRootGroupName, "main");
|
| | | }
|
| | | if (pageRepository.equals(repository)) {
|
| | | // do not link to self
|
| | |
| | | item.add(new LinkPanel("aProject", null, projectName, ProjectPage.class, WicketUtils.newProjectParameter(projectName)));
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | String repo = StringUtils.getLastPathElement(repository.name);
|
| | | UserModel user = GitBlitWebSession.get().getUser();
|
| | | if (user == null) {
|
| | |
| | | item.add(new Label("aFork", repo));
|
| | | item.add(new Label("lastChange").setVisible(false));
|
| | | }
|
| | | |
| | |
|
| | | WicketUtils.setCssStyle(item, "margin-left:" + (32*fork.level) + "px;");
|
| | | if (fork.level == 0) {
|
| | | WicketUtils.setCssClass(item, "forkSource");
|
| | |
| | | }
|
| | | }
|
| | | };
|
| | | |
| | |
|
| | | add(forksList);
|
| | | }
|
| | |
|
| | |
| | | protected String getPageName() {
|
| | | return getString("gb.forks");
|
| | | }
|
| | | |
| | |
|
| | | protected List<FlatFork> flatten(ForkModel root) {
|
| | | List<FlatFork> list = new ArrayList<FlatFork>();
|
| | | list.addAll(flatten(root, 0));
|
| | | return list;
|
| | | }
|
| | | |
| | |
|
| | | protected List<FlatFork> flatten(ForkModel node, int level) {
|
| | | List<FlatFork> list = new ArrayList<FlatFork>();
|
| | | if (node == null) {
|
| | | return list;
|
| | | }
|
| | | list.add(new FlatFork(node.repository, level));
|
| | | if (!node.isLeaf()) {
|
| | | for (ForkModel fork : node.forks) {
|
| | |
| | | }
|
| | | return list;
|
| | | }
|
| | | |
| | |
|
| | | private class FlatFork implements Serializable {
|
| | | |
| | |
|
| | | private static final long serialVersionUID = 1L;
|
| | |
|
| | | public final RepositoryModel repository;
|
| | | public final int level;
|
| | | |
| | |
|
| | | public FlatFork(RepositoryModel repository, int level) {
|
| | | this.repository = repository;
|
| | | this.level = level;
|