summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-06-26 17:09:01 -0400
committerJames Moger <james.moger@gitblit.com>2013-06-26 17:09:01 -0400
commit17725677285470ca7dbf5da93e4235415545a7cf (patch)
tree5ea4e9263b7f651a24f6c12cf48c04300152a159
parentf3a9d8bdbe5e2bfcf23ede30c8ebdb112ce49ba9 (diff)
downloadgitblit-17725677285470ca7dbf5da93e4235415545a7cf.tar.gz
gitblit-17725677285470ca7dbf5da93e4235415545a7cf.zip
Support custom header logo images of 120x45 (issue 208)
-rw-r--r--build.xml2
-rw-r--r--releases.moxie1
-rw-r--r--src/main/distrib/data/gitblit.properties7
-rw-r--r--src/main/java/WEB-INF/web.xml15
-rw-r--r--src/main/java/com/gitblit/LogoServlet.java93
-rw-r--r--src/main/java/com/gitblit/wicket/pages/RootPage.html2
-rw-r--r--src/main/java/logo.pngbin0 -> 2258 bytes
-rw-r--r--src/main/resources/gitblit.css2
8 files changed, 119 insertions, 3 deletions
diff --git a/build.xml b/build.xml
index 308ec43b..6138c20d 100644
--- a/build.xml
+++ b/build.xml
@@ -286,6 +286,7 @@
<class name="com.gitblit.FederationServlet" />
<class name="com.gitblit.GitFilter" />
<class name="com.gitblit.git.GitServlet" />
+ <class name="com.gitblit.LogoServlet" />
<class name="com.gitblit.PagesFilter" />
<class name="com.gitblit.PagesServlet" />
<class name="com.gitblit.RobotsTxtServlet" />
@@ -402,6 +403,7 @@
<class name="com.gitblit.FederationServlet" />
<class name="com.gitblit.GitFilter" />
<class name="com.gitblit.git.GitServlet" />
+ <class name="com.gitblit.LogoServlet" />
<class name="com.gitblit.PagesFilter" />
<class name="com.gitblit.PagesServlet" />
<class name="com.gitblit.RobotsTxtServlet" />
diff --git a/releases.moxie b/releases.moxie
index a8b2f4c4..0327e4be 100644
--- a/releases.moxie
+++ b/releases.moxie
@@ -52,6 +52,7 @@ r17: {
additions:
- Added a ui for the ref log introduced in 1.2.1 (issue-177)
- Added weblogic.xml to WAR for deployment on WebLogic (issue 199)
+ - Support setting a custom header logo (issue 208)
- Support username substitution in web.otherUrls (issue 213)
- Option to force client-side basic authentication instead of form-based authentication if web.authenticateViewPages=true (issue 222)
- Setting to automatically create an user account based on an authenticated user principal from the servlet container (issue-246)
diff --git a/src/main/distrib/data/gitblit.properties b/src/main/distrib/data/gitblit.properties
index d5573a61..50b09f30 100644
--- a/src/main/distrib/data/gitblit.properties
+++ b/src/main/distrib/data/gitblit.properties
@@ -531,6 +531,13 @@ realm.minPasswordLength = 5
# SINCE 0.5.0
web.siteName =
+# You may specify a different logo image for the header but it must be 120x45px.
+# If the specified file does not exist, the default Gitblit logo will be used.
+#
+# SINCE 1.3.0
+# BASEFOLDER
+web.headerLogo = ${baseFolder}/logo.png
+
# If *web.authenticateAdminPages*=true, users with "admin" role can create
# repositories, create users, and edit repository metadata.
#
diff --git a/src/main/java/WEB-INF/web.xml b/src/main/java/WEB-INF/web.xml
index 573305c4..bf121663 100644
--- a/src/main/java/WEB-INF/web.xml
+++ b/src/main/java/WEB-INF/web.xml
@@ -140,7 +140,20 @@
<servlet-name>PagesServlet</servlet-name>
<url-pattern>/pages/*</url-pattern>
</servlet-mapping>
+
+ <!-- Logo Servlet
+ <url-pattern> MUST match:
+ * Wicket Filter ignorePaths parameter -->
+ <servlet>
+ <servlet-name>LogoServlet</servlet-name>
+ <servlet-class>com.gitblit.LogoServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>LogoServlet</servlet-name>
+ <url-pattern>/logo.png</url-pattern>
+ </servlet-mapping>
+
<!-- Robots.txt Servlet
<url-pattern> MUST match:
@@ -269,7 +282,7 @@
* PagesFilter <url-pattern>
* PagesServlet <url-pattern>
* com.gitblit.Constants.PAGES_PATH -->
- <param-value>git/,feed/,zip/,federation/,rpc/,pages/,robots.txt,sparkleshare/</param-value>
+ <param-value>git/,feed/,zip/,federation/,rpc/,pages/,robots.txt,logo.png,sparkleshare/</param-value>
</init-param>
</filter>
<filter-mapping>
diff --git a/src/main/java/com/gitblit/LogoServlet.java b/src/main/java/com/gitblit/LogoServlet.java
new file mode 100644
index 00000000..7402fc13
--- /dev/null
+++ b/src/main/java/com/gitblit/LogoServlet.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2013 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;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Handles requests for logo.png
+ *
+ * @author James Moger
+ *
+ */
+public class LogoServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final long lastModified = System.currentTimeMillis();
+
+ public LogoServlet() {
+ super();
+ }
+
+ @Override
+ protected long getLastModified(HttpServletRequest req) {
+ File file = GitBlit.getFileOrFolder(Keys.web.headerLogo, "${baseFolder}/logo.png");
+ if (file.exists()) {
+ return file.lastModified();
+ } else {
+ return lastModified;
+ }
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ InputStream is = null;
+ try {
+ String contentType = null;
+ File file = GitBlit.getFileOrFolder(Keys.web.headerLogo, "${baseFolder}/logo.png");
+ if (file.exists()) {
+ // custom logo
+ ServletContext context = request.getSession().getServletContext();
+ contentType = context.getMimeType(file.getName());
+ response.setContentLength((int) file.length());
+ response.setDateHeader("Last-Modified", file.lastModified());
+ is = new FileInputStream(file);
+ } else {
+ // default logo
+ response.setDateHeader("Last-Modified", lastModified);
+ is = getClass().getResourceAsStream("/logo.png");
+ }
+ if (contentType == null) {
+ contentType = "image/png";
+ }
+ response.setContentType(contentType);
+ OutputStream os = response.getOutputStream();
+ byte[] buf = new byte[4096];
+ int bytesRead = is.read(buf);
+ while (bytesRead != -1) {
+ os.write(buf, 0, bytesRead);
+ bytesRead = is.read(buf);
+ }
+ os.flush();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ is.close();
+ }
+ }
+}
diff --git a/src/main/java/com/gitblit/wicket/pages/RootPage.html b/src/main/java/com/gitblit/wicket/pages/RootPage.html
index 69cd5f0a..696ddfd7 100644
--- a/src/main/java/com/gitblit/wicket/pages/RootPage.html
+++ b/src/main/java/com/gitblit/wicket/pages/RootPage.html
@@ -14,7 +14,7 @@
<span class="icon-bar"></span>
</a>
<a class="brand" wicket:id="rootLink">
- <img src="gitblt_25_white.png" width="79" height="25" alt="gitblit" class="logo"/>
+ <img src="logo.png" height="45" width="120" class="logo"/>
</a>
<div class="nav-collapse">
diff --git a/src/main/java/logo.png b/src/main/java/logo.png
new file mode 100644
index 00000000..e909530c
--- /dev/null
+++ b/src/main/java/logo.png
Binary files differ
diff --git a/src/main/resources/gitblit.css b/src/main/resources/gitblit.css
index 6074b369..d10f3809 100644
--- a/src/main/resources/gitblit.css
+++ b/src/main/resources/gitblit.css
@@ -59,7 +59,7 @@ hr {
}
.navbar .brand {
- padding: 10px 20px;
+ padding: 0px 10px 0px 20px;
}
.navbar .pull-right {