From 56c549e384b1a648c77bbd09a2cc77976e8a64de Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 24 May 2011 17:39:55 -0400
Subject: [PATCH] Documentation.
---
src/com/gitblit/wicket/RepositoryPage.java | 75 ++++++++++++++++++++++++++-----------
1 files changed, 53 insertions(+), 22 deletions(-)
diff --git a/src/com/gitblit/wicket/RepositoryPage.java b/src/com/gitblit/wicket/RepositoryPage.java
index ba3ca69..7b447bc 100644
--- a/src/com/gitblit/wicket/RepositoryPage.java
+++ b/src/com/gitblit/wicket/RepositoryPage.java
@@ -1,5 +1,6 @@
package com.gitblit.wicket;
+import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -34,8 +35,8 @@
import com.gitblit.wicket.models.RepositoryModel;
import com.gitblit.wicket.pages.BranchesPage;
import com.gitblit.wicket.pages.DocsPage;
+import com.gitblit.wicket.pages.EditRepositoryPage;
import com.gitblit.wicket.pages.LogPage;
-import com.gitblit.wicket.pages.RepositoriesPage;
import com.gitblit.wicket.pages.SearchPage;
import com.gitblit.wicket.pages.SummaryPage;
import com.gitblit.wicket.pages.TagsPage;
@@ -46,10 +47,10 @@
public abstract class RepositoryPage extends BasePage {
protected final String repositoryName;
- protected final String objectId;
+ protected final String objectId;
private transient Repository r = null;
-
+
private RepositoryModel m = null;
private final Logger logger = LoggerFactory.getLogger(RepositoryPage.class);
@@ -65,20 +66,22 @@
put("tags", "gb.tags");
put("tree", "gb.tree");
put("tickets", "gb.tickets");
+ put("edit", "gb.edit");
}
};
public RepositoryPage(PageParameters params) {
super(params);
- if (!params.containsKey("r")) {
- error("Repository not specified!");
- redirectToInterceptPage(new RepositoriesPage());
- }
repositoryName = WicketUtils.getRepositoryName(params);
objectId = WicketUtils.getObject(params);
- Repository r = getRepository();
+ if (StringUtils.isEmpty(repositoryName)) {
+ error(MessageFormat.format("Repository not specified for {0}!", getPageName()), true);
+ }
+ Repository r = getRepository();
+ RepositoryModel model = getRepositoryModel();
+
// standard page links
add(new BookmarkablePageLink<Void>("summary", SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
add(new BookmarkablePageLink<Void>("log", LogPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
@@ -86,17 +89,30 @@
add(new BookmarkablePageLink<Void>("tags", TagsPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newRepositoryParameter(repositoryName)));
- // per-repository extra page links
+ // per-repository extra page links
List<String> extraPageLinks = new ArrayList<String>();
- // Conditionally add tickets page
- if (getRepositoryModel().useTickets && JGitUtils.getTicketsBranch(r) != null) {
+ // Conditionally add tickets link
+ if (model.useTickets && JGitUtils.getTicketsBranch(r) != null) {
extraPageLinks.add("tickets");
}
- // Conditionally add docs page
- if (getRepositoryModel().useDocs) {
+ // Conditionally add docs link
+ if (model.useDocs) {
extraPageLinks.add("docs");
+ }
+
+ final boolean showAdmin;
+ if (GitBlit.self().settings().getBoolean(Keys.web.authenticateAdminPages, true)) {
+ boolean allowAdmin = GitBlit.self().settings().getBoolean(Keys.web.allowAdministration, false);
+ showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin();
+ } else {
+ showAdmin = GitBlit.self().settings().getBoolean(Keys.web.allowAdministration, false);
+ }
+
+ // Conditionally add edit link
+ if (showAdmin || GitBlitWebSession.get().isLoggedIn() && (model.owner != null && model.owner.equalsIgnoreCase(GitBlitWebSession.get().getUser().getUsername()))) {
+ extraPageLinks.add("edit");
}
ListDataProvider<String> extrasDp = new ListDataProvider<String>(extraPageLinks);
@@ -111,11 +127,14 @@
} else if (extra.equals("docs")) {
item.add(new Label("extraSeparator", " | "));
item.add(new LinkPanel("extraLink", null, getString("gb.docs"), DocsPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
+ } else if (extra.equals("edit")) {
+ item.add(new Label("extraSeparator", " | "));
+ item.add(new LinkPanel("extraLink", null, getString("gb.edit"), EditRepositoryPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
}
}
};
add(extrasView);
-
+
// disable current page
disablePageLink(getPageName());
@@ -123,7 +142,7 @@
SearchForm searchForm = new SearchForm("searchForm", repositoryName);
add(searchForm);
searchForm.setTranslatedAttributes();
-
+
// set stateless page preference
setStatelessHint(true);
}
@@ -146,20 +165,32 @@
if (r == null) {
Repository r = GitBlit.self().getRepository(repositoryName);
if (r == null) {
- error("Can not load repository " + repositoryName);
- redirectToInterceptPage(new RepositoriesPage());
+ error("Can not load repository " + repositoryName, true);
return null;
}
this.r = r;
}
return r;
}
-
+
protected RepositoryModel getRepositoryModel() {
if (m == null) {
- m = GitBlit.self().getRepositoryModel(repositoryName);
+ RepositoryModel model = GitBlit.self().getRepositoryModel(GitBlitWebSession.get().getUser(), repositoryName);
+ if (model == null) {
+ error("Unauthorized access for repository " + repositoryName, true);
+ return null;
+ }
+ m = model;
}
return m;
+ }
+
+ protected RevCommit getCommit() {
+ RevCommit commit = JGitUtils.getCommit(r, objectId);
+ if (commit == null) {
+ error(MessageFormat.format("Failed to find commit \"{0}\" in {1} for {2} page!", objectId, repositoryName, getPageName()), true);
+ }
+ return commit;
}
protected void addRefs(Repository r, RevCommit c) {
@@ -303,11 +334,11 @@
TextField<String> searchBox = new TextField<String>("searchBox", searchBoxModel);
add(searchBox);
}
-
- void setTranslatedAttributes() {
+
+ void setTranslatedAttributes() {
WicketUtils.setHtmlTooltip(get("searchType"), getString("gb.searchTypeTooltip"));
WicketUtils.setHtmlTooltip(get("searchBox"), getString("gb.searchTooltip"));
- WicketUtils.setInputPlaceholder(get("searchBox"), getString("gb.search"));
+ WicketUtils.setInputPlaceholder(get("searchBox"), getString("gb.search"));
}
@Override
--
Gitblit v1.9.1