From 832aa2a6f35b70da370e2f25060132150c91d220 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sat, 25 Aug 2012 08:24:58 -0400 Subject: [PATCH] Reset build identifiers for the next release --- src/com/gitblit/wicket/pages/BasePage.java | 86 ++++++++++++++++++++++++++++++++++++------- 1 files changed, 72 insertions(+), 14 deletions(-) diff --git a/src/com/gitblit/wicket/pages/BasePage.java b/src/com/gitblit/wicket/pages/BasePage.java index ca94007..234c2a9 100644 --- a/src/com/gitblit/wicket/pages/BasePage.java +++ b/src/com/gitblit/wicket/pages/BasePage.java @@ -17,24 +17,29 @@ import java.util.LinkedHashMap; import java.util.Map; +import java.util.ResourceBundle; import java.util.TimeZone; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; +import org.apache.wicket.Application; import org.apache.wicket.MarkupContainer; import org.apache.wicket.PageParameters; -import org.apache.wicket.RestartResponseAtInterceptPageException; +import org.apache.wicket.RedirectToUrlException; import org.apache.wicket.RestartResponseException; +import org.apache.wicket.markup.html.CSSPackageResource; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.link.ExternalLink; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.markup.html.panel.Fragment; +import org.apache.wicket.protocol.http.RequestUtils; import org.apache.wicket.protocol.http.WebRequest; import org.apache.wicket.protocol.http.WebResponse; import org.apache.wicket.protocol.http.servlet.ServletWebRequest; +import org.apache.wicket.request.RequestParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,6 +50,7 @@ import com.gitblit.Keys; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; +import com.gitblit.utils.TimeUtils; import com.gitblit.wicket.GitBlitWebSession; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.LinkPanel; @@ -52,18 +58,63 @@ public abstract class BasePage extends WebPage { private final Logger logger; + + private transient TimeUtils timeUtils; public BasePage() { super(); logger = LoggerFactory.getLogger(getClass()); + customizeHeader(); loginByCookie(); } public BasePage(PageParameters params) { super(params); logger = LoggerFactory.getLogger(getClass()); + customizeHeader(); loginByCookie(); } + + private void customizeHeader() { + if (GitBlit.getBoolean(Keys.web.useResponsiveLayout, true)) { + add(CSSPackageResource.getHeaderContribution("bootstrap/css/bootstrap-responsive.css")); + } + } + + protected String getLanguageCode() { + return GitBlitWebSession.get().getLocale().getLanguage(); + } + + protected TimeUtils getTimeUtils() { + if (timeUtils == null) { + ResourceBundle bundle; + try { + bundle = ResourceBundle.getBundle("com.gitblit.wicket.GitBlitWebApp", GitBlitWebSession.get().getLocale()); + } catch (Throwable t) { + bundle = ResourceBundle.getBundle("com.gitblit.wicket.GitBlitWebApp"); + } + timeUtils = new TimeUtils(bundle); + } + return timeUtils; + } + + @Override + protected void onBeforeRender() { + if (GitBlit.isDebugMode()) { + // strip Wicket tags in debug mode for jQuery DOM traversal + Application.get().getMarkupSettings().setStripWicketTags(true); + } + super.onBeforeRender(); + } + + @Override + protected void onAfterRender() { + if (GitBlit.isDebugMode()) { + // restore Wicket debug tags + Application.get().getMarkupSettings().setStripWicketTags(false); + } + super.onAfterRender(); + } private void loginByCookie() { if (!GitBlit.getBoolean(Keys.web.allowCookieAuthentication, false)) { @@ -88,7 +139,8 @@ // Set Cookie WebResponse response = (WebResponse) getRequestCycle().getResponse(); GitBlit.self().setCookie(response, user); - continueToOriginalDestination(); + + session.continueRequest(); } } @@ -162,7 +214,7 @@ protected TimeZone getTimeZone() { return GitBlit.getBoolean(Keys.web.useClientTimezone, false) ? GitBlitWebSession.get() - .getTimezone() : TimeZone.getDefault(); + .getTimezone() : GitBlit.getTimezone(); } protected String getServerName() { @@ -180,7 +232,7 @@ // inject username into repository url if authentication is required if (repository.accessRestriction.exceeds(AccessRestrictionType.NONE) && GitBlitWebSession.get().isLoggedIn()) { - String username = GitBlitWebSession.get().getUser().username; + String username = GitBlitWebSession.get().getUsername(); sb.insert(sb.indexOf("://") + 3, username + "@"); } return sb.toString(); @@ -191,10 +243,13 @@ } public void error(String message, boolean redirect) { - logger.error(message); + logger.error(message + " for " + GitBlitWebSession.get().getUsername()); if (redirect) { GitBlitWebSession.get().cacheErrorMessage(message); - throw new RestartResponseException(getApplication().getHomePage()); + RequestParameters params = getRequest().getRequestParameters(); + String relativeUrl = urlFor(RepositoriesPage.class, null).toString(); + String absoluteUrl = RequestUtils.toAbsolutePath(relativeUrl); + throw new RedirectToUrlException(absoluteUrl); } else { super.error(message); } @@ -211,12 +266,13 @@ } public void authenticationError(String message) { - logger.error(message); - if (GitBlitWebSession.get().isLoggedIn()) { - error(message, true); - } else { - throw new RestartResponseAtInterceptPageException(RepositoriesPage.class); + logger.error(getRequest().getURL() + " for " + GitBlitWebSession.get().getUsername()); + if (!GitBlitWebSession.get().isLoggedIn()) { + // cache the request if we have not authenticated. + // the request will continue after authentication. + GitBlitWebSession.get().cacheRequest(getClass()); } + error(message, true); } /** @@ -232,12 +288,14 @@ if (GitBlitWebSession.get().isLoggedIn()) { // username, logout, and change password - add(new Label("username", GitBlitWebSession.get().getUser().toString() + ":")); + add(new Label("username", GitBlitWebSession.get().getUser().getDisplayName() + ":")); add(new LinkPanel("loginLink", null, markupProvider.getString("gb.logout"), LogoutPage.class)); + boolean editCredentials = GitBlit.self().supportsCredentialChanges(); // quick and dirty hack for showing a separator - add(new Label("separator", "|")); - add(new BookmarkablePageLink<Void>("changePasswordLink", ChangePasswordPage.class)); + add(new Label("separator", "|").setVisible(editCredentials)); + add(new BookmarkablePageLink<Void>("changePasswordLink", + ChangePasswordPage.class).setVisible(editCredentials)); } else { // login add(new Label("username").setVisible(false)); -- Gitblit v1.9.1