From ffe73776d1fa1eb138c23ff780bcecbaca56a9fc Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 10 Jun 2013 08:36:53 -0400
Subject: [PATCH] Documentation
---
src/main/java/com/gitblit/wicket/pages/RootPage.java | 171 +++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 119 insertions(+), 52 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..bbe20f5 100644
--- a/src/main/java/com/gitblit/wicket/pages/RootPage.java
+++ b/src/main/java/com/gitblit/wicket/pages/RootPage.java
@@ -30,9 +30,13 @@
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 +53,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 +99,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("gb.dashboard", DashboardPage.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 +156,10 @@
}
super.setupPage(repositoryName, pageName);
+ }
+
+ protected Class<? extends BasePage> getRootNavPageClass() {
+ return getClass();
}
private PageParameters getRootPageParameters() {
@@ -451,4 +440,82 @@
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>("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