From 724da52635fbcc7c80cd0b7932f8b0d1cff6cb73 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gmail.com>
Date: Wed, 19 Jun 2013 20:56:07 -0400
Subject: [PATCH] Documentation
---
src/main/java/com/gitblit/wicket/pages/RootPage.java | 199 +++++++++++++++++++++++++++++++++++--------------
1 files changed, 142 insertions(+), 57 deletions(-)
diff --git a/src/main/java/com/gitblit/wicket/pages/RootPage.java b/src/main/java/com/gitblit/wicket/pages/RootPage.java
index adcd7b1..8760f5c 100644
--- a/src/main/java/com/gitblit/wicket/pages/RootPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RootPage.java
@@ -27,12 +27,17 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Pattern;
+import org.apache.wicket.MarkupContainer;
import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.protocol.http.WebResponse;
@@ -49,6 +54,7 @@
import com.gitblit.wicket.PageRegistration.DropDownMenuItem;
import com.gitblit.wicket.SessionlessForm;
import com.gitblit.wicket.WicketUtils;
+import com.gitblit.wicket.panels.GravatarImage;
import com.gitblit.wicket.panels.NavigationPanel;
/**
@@ -94,67 +100,47 @@
setStatelessHint(true);
}
}
+
+ if (authenticateView || authenticateAdmin) {
+ if (GitBlitWebSession.get().isLoggedIn()) {
+ UserMenu userFragment = new UserMenu("userPanel", "userMenuFragment", RootPage.this);
+ add(userFragment);
+ } else {
+ LoginForm loginForm = new LoginForm("userPanel", "loginFormFragment", RootPage.this);
+ add(loginForm);
+ }
+ } else {
+ add(new Label("userPanel").setVisible(false));
+ }
+
boolean showRegistrations = GitBlit.canFederate()
&& GitBlit.getBoolean(Keys.web.showFederationRegistrations, false);
// navigation links
List<PageRegistration> pages = new ArrayList<PageRegistration>();
- pages.add(new PageRegistration("gb.repositories", RepositoriesPage.class,
- getRootPageParameters()));
- pages.add(new PageRegistration("gb.activity", ActivityPage.class, getRootPageParameters()));
- if (GitBlit.getBoolean(Keys.web.allowLuceneIndexing, true)) {
- pages.add(new PageRegistration("gb.search", LuceneSearchPage.class));
- }
- if (showAdmin) {
- pages.add(new PageRegistration("gb.users", UsersPage.class));
- }
- if (showAdmin || showRegistrations) {
- pages.add(new PageRegistration("gb.federation", FederationPage.class));
- }
-
if (!authenticateView || (authenticateView && GitBlitWebSession.get().isLoggedIn())) {
- addDropDownMenus(pages);
- }
-
- NavigationPanel navPanel = new NavigationPanel("navPanel", getClass(), pages);
- add(navPanel);
-
- // login form
- SessionlessForm<Void> loginForm = new SessionlessForm<Void>("loginForm", getClass(), getPageParameters()) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onSubmit() {
- String username = RootPage.this.username.getObject();
- char[] password = RootPage.this.password.getObject().toCharArray();
-
- UserModel user = GitBlit.self().authenticate(username, password);
- if (user == null) {
- error(getString("gb.invalidUsernameOrPassword"));
- } else if (user.username.equals(Constants.FEDERATION_USER)) {
- // disallow the federation user from logging in via the
- // web ui
- error(getString("gb.invalidUsernameOrPassword"));
- user = null;
- } else {
- loginUser(user);
- }
+ pages.add(new PageRegistration(GitBlitWebSession.get().isLoggedIn() ? "gb.myDashboard" : "gb.dashboard", MyDashboardPage.class,
+ getRootPageParameters()));
+ pages.add(new PageRegistration("gb.repositories", RepositoriesPage.class,
+ getRootPageParameters()));
+ pages.add(new PageRegistration("gb.activity", ActivityPage.class, getRootPageParameters()));
+ if (GitBlit.getBoolean(Keys.web.allowLuceneIndexing, true)) {
+ pages.add(new PageRegistration("gb.search", LuceneSearchPage.class));
}
- };
- TextField<String> unameField = new TextField<String>("username", username);
- WicketUtils.setInputPlaceholder(unameField, getString("gb.username"));
- loginForm.add(unameField);
- PasswordTextField pwField = new PasswordTextField("password", password);
- WicketUtils.setInputPlaceholder(pwField, getString("gb.password"));
- loginForm.add(pwField);
- add(loginForm);
+ if (showAdmin) {
+ pages.add(new PageRegistration("gb.users", UsersPage.class));
+ }
+ if (showAdmin || showRegistrations) {
+ pages.add(new PageRegistration("gb.federation", FederationPage.class));
+ }
- if (authenticateView || authenticateAdmin) {
- loginForm.setVisible(!GitBlitWebSession.get().isLoggedIn());
- } else {
- loginForm.setVisible(false);
+ if (!authenticateView || (authenticateView && GitBlitWebSession.get().isLoggedIn())) {
+ addDropDownMenus(pages);
+ }
}
+
+ NavigationPanel navPanel = new NavigationPanel("navPanel", getRootNavPageClass(), pages);
+ add(navPanel);
// display an error message cached from a redirect
String cachedMessage = GitBlitWebSession.get().clearErrorMessage();
@@ -171,6 +157,10 @@
}
super.setupPage(repositoryName, pageName);
+ }
+
+ protected Class<? extends BasePage> getRootNavPageClass() {
+ return getClass();
}
private PageParameters getRootPageParameters() {
@@ -189,7 +179,7 @@
// remove days back parameter if it is the default value
if (params.containsKey("db")
- && params.getInt("db") == GitBlit.getInteger(Keys.web.activityDuration, 14)) {
+ && params.getInt("db") == GitBlit.getInteger(Keys.web.activityDuration, 7)) {
params.remove("db");
}
return params;
@@ -306,18 +296,32 @@
protected List<DropDownMenuItem> getTimeFilterItems(PageParameters params) {
// days back choices - additive parameters
- int daysBack = GitBlit.getInteger(Keys.web.activityDuration, 14);
+ int daysBack = GitBlit.getInteger(Keys.web.activityDuration, 7);
if (daysBack < 1) {
- daysBack = 14;
+ daysBack = 7;
}
+ PageParameters clonedParams;;
+ if (params == null) {
+ clonedParams = new PageParameters();
+ } else {
+ clonedParams = new PageParameters(params);
+ }
+
+ if (!clonedParams.containsKey("db")) {
+ clonedParams.put("db", daysBack);
+ }
+
List<DropDownMenuItem> items = new ArrayList<DropDownMenuItem>();
- Set<Integer> choicesSet = new HashSet<Integer>(Arrays.asList(daysBack, 14, 28, 60, 90, 180));
+ Set<Integer> choicesSet = new TreeSet<Integer>(GitBlit.getIntegers(Keys.web.activityDurationChoices));
+ if (choicesSet.isEmpty()) {
+ choicesSet.addAll(Arrays.asList(7, 14, 28, 60, 90, 180));
+ }
List<Integer> choices = new ArrayList<Integer>(choicesSet);
Collections.sort(choices);
String lastDaysPattern = getString("gb.lastNDays");
for (Integer db : choices) {
String txt = MessageFormat.format(lastDaysPattern, db);
- items.add(new DropDownMenuItem(txt, "db", db.toString(), params));
+ items.add(new DropDownMenuItem(txt, "db", db.toString(), clonedParams));
}
items.add(new DropDownMenuItem());
return items;
@@ -451,4 +455,85 @@
Collections.sort(list);
return list;
}
+
+ /**
+ * Inline login form.
+ */
+ private class LoginForm extends Fragment {
+ private static final long serialVersionUID = 1L;
+
+ public LoginForm(String id, String markupId, MarkupContainer markupProvider) {
+ super(id, markupId, markupProvider);
+ setRenderBodyOnly(true);
+
+ SessionlessForm<Void> loginForm = new SessionlessForm<Void>("loginForm", RootPage.this.getClass(), getPageParameters()) {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onSubmit() {
+ String username = RootPage.this.username.getObject();
+ char[] password = RootPage.this.password.getObject().toCharArray();
+
+ UserModel user = GitBlit.self().authenticate(username, password);
+ if (user == null) {
+ error(getString("gb.invalidUsernameOrPassword"));
+ } else if (user.username.equals(Constants.FEDERATION_USER)) {
+ // disallow the federation user from logging in via the
+ // web ui
+ error(getString("gb.invalidUsernameOrPassword"));
+ user = null;
+ } else {
+ loginUser(user);
+ }
+ }
+ };
+ TextField<String> unameField = new TextField<String>("username", username);
+ WicketUtils.setInputPlaceholder(unameField, markupProvider.getString("gb.username"));
+ loginForm.add(unameField);
+ PasswordTextField pwField = new PasswordTextField("password", password);
+ WicketUtils.setInputPlaceholder(pwField, markupProvider.getString("gb.password"));
+ loginForm.add(pwField);
+ add(loginForm);
+ }
+ }
+
+ /**
+ * Menu for the authenticated user.
+ */
+ static class UserMenu extends Fragment {
+
+ private static final long serialVersionUID = 1L;
+
+ public UserMenu(String id, String markupId, MarkupContainer markupProvider) {
+ super(id, markupId, markupProvider);
+ setRenderBodyOnly(true);
+
+ GitBlitWebSession session = GitBlitWebSession.get();
+ UserModel user = session.getUser();
+ boolean editCredentials = GitBlit.self().supportsCredentialChanges(user);
+ boolean standardLogin = session.authenticationType.isStandard();
+
+ if (GitBlit.getBoolean(Keys.web.allowGravatar, true)) {
+ add(new GravatarImage("username", user.getDisplayName(),
+ user.emailAddress, "navbarGravatar", 20, false, false));
+ } else {
+ add(new Label("username", user.getDisplayName()));
+ }
+
+ add(new Label("displayName", user.getDisplayName()));
+
+ add(new BookmarkablePageLink<Void>("newRepository",
+ EditRepositoryPage.class).setVisible(user.canAdmin() || user.canCreate()));
+
+ add(new BookmarkablePageLink<Void>("myProfile",
+ UserPage.class, WicketUtils.newUsernameParameter(user.username)));
+
+ add(new BookmarkablePageLink<Void>("changePassword",
+ ChangePasswordPage.class).setVisible(editCredentials));
+
+ add(new BookmarkablePageLink<Void>("logout",
+ LogoutPage.class).setVisible(standardLogin));
+ }
+ }
}
--
Gitblit v1.9.1