- Added a ui for the ref log introduced in 1.2.1 (issue-177)\r
- Added weblogic.xml to WAR for deployment on WebLogic (issue 199)\r
- Support setting a custom header logo (issue 208)\r
+ - Support header color customizations (issue 209)\r
- Support username substitution in web.otherUrls (issue 213)\r
- Option to force client-side basic authentication instead of form-based authentication if web.authenticateViewPages=true (issue 222)\r
- Setting to automatically create an user account based on an authenticated user principal from the servlet container (issue-246)\r
- { name: 'web.activityCacheDays', defaultValue: 14 }\r
- { name: 'web.allowAppCloneLinks', defaultValue: 'true' }\r
- { name: 'web.forceDefaultLocale', defaultValue: ' ' }\r
+ - { name: 'web.headerLogo', defaultValue: '${baseFolder}/logo.png' }\r
+ - { name: 'web.headerBackgroundColor', defaultValue: ' ' }\r
+ - { name: 'web.headerForegroundColor', defaultValue: ' ' }\r
+ - { name: 'web.headerHoverColor', defaultValue: ' ' }\r
+ - { name: 'web.headerBorderColor', defaultValue: ' ' }\r
+ - { name: 'web.headerBorderFocusColor', defaultValue: ' ' }\r
- { name: 'web.metricAuthorExclusions', defaultValue: ' ' }\r
- { name: 'web.overviewReflogCount', defaultValue: 5 }\r
- { name: 'web.reflogChangesPerPage', defaultValue: 10 }\r
# BASEFOLDER\r
web.headerLogo = ${baseFolder}/logo.png\r
\r
+# You may specify a custom header background CSS color. If unspecified, the\r
+# default color will be used.\r
+#\r
+# e.g. web.headerBackgroundColor = #002060\r
+#\r
+# SINCE 1.3.0\r
+web.headerBackgroundColor =\r
+\r
+# You may specify a custom header foreground CSS color. If unspecified, the\r
+# default color will be used.\r
+#\r
+# e.g. web.headerForegroundColor = white\r
+#\r
+# SINCE 1.3.0\r
+web.headerForegroundColor =\r
+\r
+# You may specify a custom header foreground hover CSS color. If unspecified, the\r
+# default color will be used.\r
+#\r
+# e.g. web.headerHoverColor = white\r
+#\r
+# SINCE 1.3.0\r
+web.headerHoverColor =\r
+\r
+# You may specify a custom header border CSS color. If unspecified, the default\r
+# color will be used.\r
+#\r
+# e.g. web.headerBorderColor = #002060\r
+#\r
+# SINCE 1.3.0\r
+web.headerBorderColor =\r
+\r
+# You may specify a custom header border CSS color. If unspecified, the default\r
+# color will be used.\r
+#\r
+# e.g. web.headerBorderFocusColor = #ff9900\r
+#\r
+# SINCE 1.3.0\r
+web.headerBorderFocusColor =\r
+\r
# If *web.authenticateAdminPages*=true, users with "admin" role can create\r
# repositories, create users, and edit repository metadata.\r
#\r
<wicket:extend>\r
<body onload="document.getElementById('query').focus(); prettyPrint();">\r
<div class="container">\r
- <div class="pageTitle">\r
- <h2><wicket:message key="gb.search"></wicket:message></h2>\r
+ <!-- page header -->\r
+ <div class="dashboardTitle">\r
+ <wicket:message key="gb.search"></wicket:message> \r
</div>\r
<form class="form-inline" wicket:id="searchForm">\r
<div class="row">\r
<body>\r
<wicket:extend>\r
<div class="container">\r
- <div class="row" style="padding-top:5px;">\r
+ <div class="row">\r
<div class="span12">\r
<div class="dashboardTitle">\r
<span wicket:id="projectTitle"></span>\r
<body>\r
<wicket:extend>\r
<div class="container">\r
- <div class="markdown" style="padding-bottom:5px;" wicket:id="repositoriesMessage">[repositories message]</div>\r
+ <div class="markdown" style="padding: 5px 0px;" wicket:id="repositoriesMessage">[repositories message]</div>\r
\r
<div wicket:id="repositoriesPanel">[repositories panel]</div>\r
</div>\r
\r
import org.apache.wicket.MarkupContainer;\r
import org.apache.wicket.PageParameters;\r
+import org.apache.wicket.behavior.HeaderContributor;\r
+import org.apache.wicket.markup.html.IHeaderContributor;\r
+import org.apache.wicket.markup.html.IHeaderResponse;\r
import org.apache.wicket.markup.html.basic.Label;\r
import org.apache.wicket.markup.html.form.PasswordTextField;\r
import org.apache.wicket.markup.html.form.TextField;\r
\r
@Override\r
protected void setupPage(String repositoryName, String pageName) {\r
+\r
+ // CSS header overrides\r
+ add(new HeaderContributor(new IHeaderContributor() {\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ public void renderHead(IHeaderResponse response) {\r
+ StringBuilder buffer = new StringBuilder();\r
+ buffer.append("<style type=\"text/css\">\n");\r
+ buffer.append(".navbar-inner {\n");\r
+ final String headerBackground = GitBlit.getString(Keys.web.headerBackgroundColor, null);\r
+ if (!StringUtils.isEmpty(headerBackground)) {\r
+ buffer.append(MessageFormat.format("background-color: {0};\n", headerBackground));\r
+ }\r
+ final String headerBorder = GitBlit.getString(Keys.web.headerBorderColor, null);\r
+ if (!StringUtils.isEmpty(headerBorder)) {\r
+ buffer.append(MessageFormat.format("border-bottom: 1px solid {0} !important;\n", headerBorder));\r
+ }\r
+ buffer.append("}\n");\r
+ final String headerBorderFocus = GitBlit.getString(Keys.web.headerBorderFocusColor, null);\r
+ if (!StringUtils.isEmpty(headerBorderFocus)) {\r
+ buffer.append(".navbar ul li:focus, .navbar .active {\n");\r
+ buffer.append(MessageFormat.format("border-bottom: 4px solid {0};\n", headerBorderFocus));\r
+ buffer.append("}\n");\r
+ }\r
+ final String headerForeground = GitBlit.getString(Keys.web.headerForegroundColor, null);\r
+ if (!StringUtils.isEmpty(headerForeground)) {\r
+ buffer.append(".navbar ul.nav li a {\n");\r
+ buffer.append(MessageFormat.format("color: {0};\n", headerForeground));\r
+ buffer.append("}\n");\r
+ buffer.append(".navbar ul.nav .active a {\n");\r
+ buffer.append(MessageFormat.format("color: {0};\n", headerForeground));\r
+ buffer.append("}\n");\r
+ }\r
+ final String headerHover = GitBlit.getString(Keys.web.headerHoverColor, null);\r
+ if (!StringUtils.isEmpty(headerHover)) {\r
+ buffer.append(".navbar ul.nav li a:hover {\n");\r
+ buffer.append(MessageFormat.format("color: {0} !important;\n", headerHover));\r
+ buffer.append("}\n");\r
+ }\r
+ buffer.append("</style>\n");\r
+ response.renderString(buffer.toString());\r
+ }\r
+ }));\r
+ \r
boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, false);\r
boolean authenticateAdmin = GitBlit.getBoolean(Keys.web.authenticateAdminPages, true);\r
boolean allowAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, true);\r
position: static;
}
.navbar-fixed-top {
- margin-bottom: 18px;
+ margin-bottom: 0px;
}
.navbar-fixed-bottom {
margin-top: 18px;
}
.navbar-fixed-top .navbar-inner,
.navbar-fixed-bottom .navbar-inner {
- padding: 5px;
+ padding: 0px 5px 1px;
}
.navbar .container {
width: auto;
padding: 0;
}
- .navbar .brand {
- padding-right: 10px;
- padding-left: 10px;
- margin: 0 0 0 -5px;
- }
.nav-collapse {
clear: both;
}
body {\r
- /* 50px to start the container 10px below the navbar */\r
- padding-top: 60px;\r
+ /* 47px is the header height */\r
+ padding-top: 47px;\r
}\r
\r
footer {\r
.navbar .brand {\r
padding: 0px 10px 0px 20px;\r
}\r
+.navbar .btn-navbar {\r
+ margin-top: 10px;\r
+}\r
\r
.navbar .pull-right {\r
margin: 0;\r
\r
.navbar-inner {\r
background-color: #002060;\r
- background-repeat: none;\r
background-image: none;\r
- -webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);\r
- -moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);\r
- box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);\r
- border-bottom: 2px solid #ff9900 !important;\r
+ box-shadow: none;\r
+ border-bottom: 1px solid #002060 !important;\r
}\r
\r
.navbar ul li:focus, .navbar .active {\r
- background-repeat:no-repeat;\r
- background-image: url(arrow_page.png);\r
- background-position: center bottom;\r
- outline: 0;\r
- padding-bottom:3px;\r
+ outline: 0; \r
+ padding-bottom: 1px;\r
+ border-bottom: 3px solid #ff9900;\r
+ margin-bottom: -1px;\r
}\r
\r
.navbar .active a {\r
\r
div.dashboardTitle {\r
font-size: 1.75em;\r
- padding-bottom: 5px;\r
- margin-bottom: 10px;\r
+ padding: 5px 0px;\r
+ margin: 10px 0px;\r
border-bottom: 1px solid #ccc;\r
}\r
\r
.repositorynavbar {\r
background-color: #fbfbfb;\r
border-bottom: 1px solid #ccc;\r
- margin-top: -8px;\r
margin-bottom: 10px;\r
}\r
\r
.repositorynavbar .title {\r
line-height: 32px;\r
+ padding: 5px 0px;\r
}\r
\r
.repositorynavbar .repository {\r
color: #002060;\r
}\r
\r
-.repositorynavbar .repositorynavbar-inner { \r
+.repositorynavbar .repositorynavbar-inner {\r
+ padding-top: 2px;\r
}\r
\r
.repositorynavbar ul {\r
text-decoration: underline;\r
}\r
\r
+@media (max-width: 767px) {\r
+ .repositorynavbar {\r
+ margin-right: -20px;\r
+ margin-left: -20px;\r
+ padding: 0px 5px;\r
+ }\r
+}\r
+\r
.btn-appmenu {\r
border-radius: 4px !important;\r
background-color: #002060;\r
}\r
\r
ul > li:focus, .active {\r
- background-repeat:no-repeat;\r
- background-image: url('../../arrow_page.png');\r
- background-position: center bottom;\r
- outline: 0;\r
+ outline: 0; \r
+ padding-bottom: 1px;\r
+ border-bottom: 3px solid #ff9900;\r
+ margin-bottom: -1px;\r
}\r
}\r
\r