| | |
| | | package com.gitblit.wicket.pages;
|
| | |
|
| | | import java.io.Serializable;
|
| | | import java.io.UnsupportedEncodingException;
|
| | | import java.net.URLEncoder;
|
| | | import java.text.MessageFormat;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Arrays;
|
| | |
| | | import org.eclipse.jgit.lib.PersonIdent;
|
| | | import org.eclipse.jgit.lib.Repository;
|
| | | import org.eclipse.jgit.revwalk.RevCommit;
|
| | | import org.pegdown.LinkRenderer;
|
| | | import org.pegdown.ast.WikiLinkNode;
|
| | | import org.slf4j.Logger;
|
| | | import org.slf4j.LoggerFactory;
|
| | |
|
| | |
| | |
|
| | | // conditional links
|
| | | // per-repository extra page links
|
| | | if (model.showReadme || model.useDocs) {
|
| | | if (model.useDocs) {
|
| | | pages.put("docs", new PageRegistration("gb.docs", DocsPage.class, params, true));
|
| | | }
|
| | | if (JGitUtils.getPagesBranch(r) != null) {
|
| | |
| | | }
|
| | | getSubmodules(commit);
|
| | | return commit;
|
| | | }
|
| | |
|
| | | protected String getBestCommitId(RevCommit commit) {
|
| | | String head = null;
|
| | | try {
|
| | | head = r.resolve(getRepositoryModel().HEAD).getName();
|
| | | } catch (Exception e) {
|
| | | }
|
| | |
|
| | | String id = commit.getName();
|
| | | if (!StringUtils.isEmpty(head) && head.equals(id)) {
|
| | | // match default branch
|
| | | return Repository.shortenRefName(getRepositoryModel().HEAD);
|
| | | }
|
| | |
|
| | | // find first branch match
|
| | | for (RefModel ref : JGitUtils.getLocalBranches(r, false, -1)) {
|
| | | if (ref.getObjectId().getName().equals(id)) {
|
| | | return ref.getName();
|
| | | }
|
| | | }
|
| | |
|
| | | // return sha
|
| | | return id;
|
| | | }
|
| | |
|
| | | protected Map<String, SubmoduleModel> getSubmodules(RevCommit commit) {
|
| | |
| | | return isOwner;
|
| | | }
|
| | |
|
| | | /**
|
| | | * Returns a Pegdown/Markdown link renderer which renders WikiLinks.
|
| | | *
|
| | | * @return a link renderer
|
| | | */
|
| | | protected LinkRenderer getLinkRenderer() {
|
| | | RevCommit head = JGitUtils.getCommit(r, "HEAD");
|
| | | final String id = getBestCommitId(head);
|
| | | LinkRenderer renderer = new LinkRenderer() {
|
| | | @Override
|
| | | public Rendering render(WikiLinkNode node) {
|
| | | try {
|
| | | String path = URLEncoder.encode(node.getText().replace(' ', '-'), "UTF-8");
|
| | | String name = node.getText();
|
| | | if (name.indexOf('/') > -1) {
|
| | | name = name.substring(name.lastIndexOf('/') + 1);
|
| | | }
|
| | | String url = urlFor(MarkdownPage.class, WicketUtils.newPathParameter(repositoryName, id, path)).toString();
|
| | | return new Rendering(url, name);
|
| | | } catch (UnsupportedEncodingException e) {
|
| | | throw new IllegalStateException();
|
| | | }
|
| | | }
|
| | | };
|
| | | return renderer;
|
| | | }
|
| | |
|
| | | private class SearchForm extends SessionlessForm<Void> implements Serializable {
|
| | | private static final long serialVersionUID = 1L;
|
| | |
|