From cb285cbfddfc0b633d6b8cdb4dc0d2bd2b8b51ef Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 05 Jan 2012 17:34:05 -0500 Subject: [PATCH] Fixed bug in receive hook for repositories in subfolders --- src/com/gitblit/wicket/pages/RepositoriesPage.java | 151 ++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 109 insertions(+), 42 deletions(-) diff --git a/src/com/gitblit/wicket/pages/RepositoriesPage.java b/src/com/gitblit/wicket/pages/RepositoriesPage.java index b0e5e57..f679c76 100644 --- a/src/com/gitblit/wicket/pages/RepositoriesPage.java +++ b/src/com/gitblit/wicket/pages/RepositoriesPage.java @@ -19,65 +19,103 @@ import java.io.FileReader; import java.io.InputStream; import java.io.InputStreamReader; +import java.text.MessageFormat; +import java.util.List; +import org.apache.wicket.Application; import org.apache.wicket.Component; +import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.resource.ContextRelativeResource; import com.gitblit.GitBlit; import com.gitblit.Keys; +import com.gitblit.models.RepositoryModel; import com.gitblit.utils.MarkdownUtils; import com.gitblit.utils.StringUtils; import com.gitblit.wicket.GitBlitWebSession; +import com.gitblit.wicket.PageRegistration; +import com.gitblit.wicket.PageRegistration.DropDownMenuItem; +import com.gitblit.wicket.PageRegistration.DropDownMenuRegistration; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.RepositoriesPanel; -import com.gitblit.wicket.panels.UsersPanel; -public class RepositoriesPage extends BasePage { +public class RepositoriesPage extends RootPage { public RepositoriesPage() { super(); + setup(null); + } + + public RepositoriesPage(PageParameters params) { + super(params); + setup(params); + } + + @Override + protected boolean reusePageParameters() { + return true; + } + + private void setup(PageParameters params) { setupPage("", ""); - - final boolean showAdmin; - if (GitBlit.getBoolean(Keys.web.authenticateAdminPages, true)) { - boolean allowAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false); - showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin(); - // authentication requires state and session - setStatelessHint(false); - } else { - showAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, false); - if (GitBlit.getBoolean(Keys.web.authenticateViewPages, false)) { - // authentication requires state and session - setStatelessHint(false); - } else { - // no authentication required, no state and no session required - setStatelessHint(true); - } - } - - // display an error message cached from a redirect - String cachedMessage = GitBlitWebSession.get().clearErrorMessage(); - if (!StringUtils.isEmpty(cachedMessage)) { - error(cachedMessage); + // check to see if we should display a login message + boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, true); + if (authenticateView && !GitBlitWebSession.get().isLoggedIn()) { + String messageSource = GitBlit.getString(Keys.web.loginMessage, "gitblit"); + String message = readMarkdown(messageSource, "login.mkd"); + Component repositoriesMessage = new Label("repositoriesMessage", message); + add(repositoriesMessage.setEscapeModelStrings(false)); + add(new Label("repositoriesPanel")); + return; } // Load the markdown welcome message String messageSource = GitBlit.getString(Keys.web.repositoriesMessage, "gitblit"); - String message = "<br/>"; + String message = readMarkdown(messageSource, "welcome.mkd"); + Component repositoriesMessage = new Label("repositoriesMessage", message) + .setEscapeModelStrings(false).setVisible(message.length() > 0); + add(repositoriesMessage); + + List<RepositoryModel> repositories = getRepositories(params); + + RepositoriesPanel repositoriesPanel = new RepositoriesPanel("repositoriesPanel", showAdmin, + repositories, true, getAccessRestrictions()); + // push the panel down if we are hiding the admin controls and the + // welcome message + if (!showAdmin && !repositoriesMessage.isVisible()) { + WicketUtils.setCssStyle(repositoriesPanel, "padding-top:5px;"); + } + add(repositoriesPanel); + } + + @Override + protected void addDropDownMenus(List<PageRegistration> pages) { + PageParameters params = getPageParameters(); + + DropDownMenuRegistration menu = new DropDownMenuRegistration("gb.filters", + RepositoriesPage.class); + // preserve time filter option on repository choices + menu.menuItems.addAll(getRepositoryFilterItems(params)); + + // preserve repository filter option on time choices + menu.menuItems.addAll(getTimeFilterItems(params)); + + if (menu.menuItems.size() > 0) { + // Reset Filter + menu.menuItems.add(new DropDownMenuItem(getString("gb.reset"), null, null)); + } + + pages.add(menu); + } + + private String readMarkdown(String messageSource, String resource) { + String message = ""; if (messageSource.equalsIgnoreCase("gitblit")) { - // Read default welcome message - try { - ContextRelativeResource res = WicketUtils.getResource("welcome.mkd"); - InputStream is = res.getResourceStream().getInputStream(); - InputStreamReader reader = new InputStreamReader(is); - message = MarkdownUtils.transformMarkdown(reader); - } catch (Throwable t) { - message = "Failed to read default welcome message!"; - error(message, t, false); - } + // Read default message + message = readDefaultMarkdown(resource); } else { - // Read user-supplied welcome message + // Read user-supplied message if (!StringUtils.isEmpty(messageSource)) { File file = new File(messageSource); if (file.exists()) { @@ -86,17 +124,46 @@ message = MarkdownUtils.transformMarkdown(reader); } catch (Throwable t) { message = "Failed to read " + file; - error(message, t, false); + warn(message, t); } } else { message = messageSource + " is not a valid file."; } } } - Component repositoriesMessage = new Label("repositoriesMessage", message) - .setEscapeModelStrings(false); - add(repositoriesMessage); - add(new RepositoriesPanel("repositoriesPanel", showAdmin, getAccessRestrictions())); - add(new UsersPanel("usersPanel", showAdmin).setVisible(showAdmin)); + return message; + } + + private String readDefaultMarkdown(String file) { + String message; + try { + ContextRelativeResource res = WicketUtils.getResource(file); + InputStream is = res.getResourceStream().getInputStream(); + InputStreamReader reader = new InputStreamReader(is); + message = MarkdownUtils.transformMarkdown(reader); + reader.close(); + } catch (Throwable t) { + message = MessageFormat.format("Failed to read default message from {0}!", file); + error(message, t, false); + } + return message; + } + + @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(); } } -- Gitblit v1.9.1