From 04627e5fff260c88120d3f7f01dba052d04c47da Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 11 Jan 2012 20:04:01 -0500
Subject: [PATCH] Fixed missing icon resource for the manager (issue 40)
---
src/com/gitblit/wicket/pages/RepositoriesPage.java | 168 +++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 125 insertions(+), 43 deletions(-)
diff --git a/src/com/gitblit/wicket/pages/RepositoriesPage.java b/src/com/gitblit/wicket/pages/RepositoriesPage.java
index e421c89..f679c76 100644
--- a/src/com/gitblit/wicket/pages/RepositoriesPage.java
+++ b/src/com/gitblit/wicket/pages/RepositoriesPage.java
@@ -1,69 +1,121 @@
+/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package com.gitblit.wicket.pages;
import java.io.File;
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.BasePage;
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.self().settings().getBoolean(Keys.web.authenticateAdminPages, true)) {
- boolean allowAdmin = GitBlit.self().settings().getBoolean(Keys.web.allowAdministration, false);
- showAdmin = allowAdmin && GitBlitWebSession.get().canAdmin();
- // authentication requires state and session
- setStatelessHint(false);
- } else {
- showAdmin = GitBlit.self().settings().getBoolean(Keys.web.allowAdministration, false);
- if (GitBlit.self().settings().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.self().settings().getString(Keys.web.repositoriesMessage, "gitblit");
- String message = "<br/>";
+ String messageSource = GitBlit.getString(Keys.web.repositoriesMessage, "gitblit");
+ 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()) {
@@ -72,16 +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