diff options
author | James Moger <james.moger@gitblit.com> | 2013-06-26 17:09:01 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2013-06-26 17:09:01 -0400 |
commit | 17725677285470ca7dbf5da93e4235415545a7cf (patch) | |
tree | 5ea4e9263b7f651a24f6c12cf48c04300152a159 | |
parent | f3a9d8bdbe5e2bfcf23ede30c8ebdb112ce49ba9 (diff) | |
download | gitblit-17725677285470ca7dbf5da93e4235415545a7cf.tar.gz gitblit-17725677285470ca7dbf5da93e4235415545a7cf.zip |
Support custom header logo images of 120x45 (issue 208)
-rw-r--r-- | build.xml | 2 | ||||
-rw-r--r-- | releases.moxie | 1 | ||||
-rw-r--r-- | src/main/distrib/data/gitblit.properties | 7 | ||||
-rw-r--r-- | src/main/java/WEB-INF/web.xml | 15 | ||||
-rw-r--r-- | src/main/java/com/gitblit/LogoServlet.java | 93 | ||||
-rw-r--r-- | src/main/java/com/gitblit/wicket/pages/RootPage.html | 2 | ||||
-rw-r--r-- | src/main/java/logo.png | bin | 0 -> 2258 bytes | |||
-rw-r--r-- | src/main/resources/gitblit.css | 2 |
8 files changed, 119 insertions, 3 deletions
@@ -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 Binary files differnew file mode 100644 index 00000000..e909530c --- /dev/null +++ b/src/main/java/logo.png 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 {
|