From fb01c9c8cc36ac28c895b6b7daad39038f3d17a2 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 04 Apr 2011 17:47:07 -0400
Subject: [PATCH] Improvements to css and specialized link panels.

---
 src/com/gitblit/wicket/pages/TagsPage.java                |    9 
 src/com/gitblit/wicket/panels/TreeLinksPanel.html         |    2 
 src/com/gitblit/wicket/pages/TagPage.html                 |    6 
 src/com/gitblit/wicket/panels/PageLinksPanel.html         |    2 
 src/com/gitblit/wicket/panels/TreeBlobLinksPanel.html     |    8 
 resources/gitblt-favicon.png                              |    0 
 src/com/gitblit/wicket/panels/AnnotatedTagLinksPanel.html |    8 
 src/com/gitblit/wicket/pages/ShortLogPage.html            |    4 
 gitblit.properties                                        |    8 
 src/com/gitblit/wicket/panels/AnnotatedTagLinksPanel.java |   23 +
 src/com/gitblit/wicket/panels/TreeLinksPanel.java         |   12 
 src/com/gitblit/wicket/panels/TreeBlobLinksPanel.java     |   22 +
 src/com/gitblit/wicket/pages/BlobPage.java                |    2 
 src/com/gitblit/utils/JGitUtils.java                      |    2 
 src/com/gitblit/wicket/pages/SummaryPage.html             |   66 ++--
 src/com/gitblit/wicket/pages/TreePage.java                |    4 
 src/com/gitblit/wicket/panels/PageFooter.java             |    2 
 src/com/gitblit/wicket/panels/PageHeader.html             |    2 
 src/com/gitblit/wicket/pages/TreePage.html                |    2 
 /dev/null                                                 |  604 -------------------------------------
 src/com/gitblit/wicket/panels/PageLinksPanel.java         |    8 
 src/com/gitblit/wicket/pages/TagsPage.html                |    6 
 src/com/gitblit/wicket/panels/PageFooter.html             |    3 
 resources/gitblit.css                                     |   63 +++
 src/com/gitblit/wicket/pages/SummaryPage.java             |   49 ++
 25 files changed, 227 insertions(+), 690 deletions(-)

diff --git a/gitblit.properties b/gitblit.properties
index 7982504..560515a 100644
--- a/gitblit.properties
+++ b/gitblit.properties
@@ -66,6 +66,14 @@
 # This is a real-time graph so generation may be expensive. 
 generateActivityGraph = true
 
+# The number of commits to display on the summary page
+# Value must exceed 0 else default of 20 is used
+summaryCommitCount = 20
+
+# The number of tags/heads to display on the summary page
+# Value must exceed 0 else default of 5 is used
+summaryRefsCount = 5
+
 # Registered extensions for google-code-prettify
 prettyPrintExtensions = c cpp cs css htm html java js php pl prefs properties py rb sh sql xml vb
 
diff --git a/resources/git-favicon.png b/resources/git-favicon.png
deleted file mode 100644
index aae35a7..0000000
--- a/resources/git-favicon.png
+++ /dev/null
Binary files differ
diff --git a/resources/gitblit.css b/resources/gitblit.css
index eebfdab..21f6ca7 100644
--- a/resources/gitblit.css
+++ b/resources/gitblit.css
@@ -51,6 +51,12 @@
 	border-width: 0px;
 }
 
+img.activityGraph {
+	float: right;
+	border-width: 0px;
+	padding: 8px;
+}
+
 div.header {
 	background-color: #D2C3AF;
 	padding: 3px;
@@ -74,11 +80,17 @@
 div.link {
 	padding: 2px 5px;
 	font-family: sans-serif;
-	font-size: 9px;
+	font-size: 11px;
+}
+
+div.link span {
+	font-family: inherit;
+	font-size: inherit;
 }
 
 div.link a {
-	font-size: 9px;
+	font-family: inherit;
+	font-size: inherit;
 }
 
 div.page_header {
@@ -87,7 +99,7 @@
 	font-family: sans-serif;
 	font-weight: bold;
 	font-size: 150%;
-	color: #ccc;
+	color: #bbb;
 	background-color: #ffffff;
 }
 
@@ -112,6 +124,7 @@
 }
 
 div.page_footer {
+	height: 17px;
 	color: black;
 	background-color: #ffffff;
 	padding: 5px;
@@ -120,7 +133,7 @@
 }
 
 div.page_nav {
-	color: #ccc;
+	color: #ddd;
 	background-color: #000070;
 	padding: 5px;
 }
@@ -195,15 +208,33 @@
 }
 
 table.repositories th {
-	background-color:#D3BDA1;
-	padding: 5px;
+	background-color:#000070;
+	padding: 4px;
 	border-bottom: 1px solid #bbb;
 }
 
+table.repositories td {
+	padding: 4px;
+}
+
+table.repositories th a {
+	color:#ddd;
+	text-decoration: none;
+	font-weight: normal;
+}
+
+table.repositories th a:hover {
+	text-decoration: underline;
+}
+
+table.repositories th.wicket_orderDown a, table.repositories th.wicket_orderUp a {
+	color: yellow;
+}
+
 tr th a { padding-right: 15px; background-position: right; background-repeat:no-repeat; }
-tr th.wicket_orderDown a {font-weight: bold; background-image: url(arrow_down.png); }
-tr th.wicket_orderUp a { font-weight: bold; background-image: url(arrow_up.png); }
-tr th.wicket_orderNone a { font-weight: normal; background-image: url(arrow_off.png); }
+tr th.wicket_orderDown a {background-image: url(arrow_down.png); }
+tr th.wicket_orderUp a { background-image: url(arrow_up.png); }
+tr th.wicket_orderNone a { background-image: url(arrow_off.png); }
 
 tr.light {
 	background-color: #ffffff;
@@ -225,7 +256,14 @@
 /* currently both use the same, but it can change */
 tr.light:hover,
 tr.dark:hover {
-	background-color: #f6a234;
+	/*background-color: #0099b7;*/
+	background-color: #000070;
+	color: white;
+}
+
+tr.light:hover a,
+tr.dark:hover a {
+	color: white;	
 }
 
 td {
@@ -259,6 +297,10 @@
 	padding-right:15px;
 }
 
+td.rightAlign {
+	text-align: right;
+}
+
 span.refs span {
 	padding: 0px 4px;
 	font-family: sans-serif;
@@ -267,6 +309,7 @@
 	border: 1px solid;
 	background-color: #ffaaff;
 	border-color: #ffccff #ff00ee #ff00ee #ffccff;
+	color: black;
 }
 
 span.refs span a {
diff --git a/resources/gitblt-favicon.png b/resources/gitblt-favicon.png
new file mode 100644
index 0000000..f6ac154
--- /dev/null
+++ b/resources/gitblt-favicon.png
Binary files differ
diff --git a/resources/gitweb.css b/resources/gitweb.css
deleted file mode 100644
index 4bf6e23..0000000
--- a/resources/gitweb.css
+++ /dev/null
@@ -1,604 +0,0 @@
-body {
-	font-family: sans-serif;
-	font-size: small;
-	border: solid #d9d8d1;
-	border-width: 1px;
-	margin: 10px;
-	background-color: #ffffff;
-	color: #000000;
-}
-
-a {
-	color: #0000cc;
-}
-
-a:hover, a:visited, a:active {
-	color: #880000;
-}
-
-span.cntrl {
-	border: dashed #aaaaaa;
-	border-width: 1px;
-	padding: 0px 2px 0px 2px;
-	margin:  0px 2px 0px 2px;
-}
-
-img.logo {
-	float: right;
-	border-width: 0px;
-}
-
-img.avatar {
-	vertical-align: middle;
-}
-
-a.list img.avatar {
-	border-style: none;
-}
-
-div.page_header {
-	height: 25px;
-	padding: 8px;
-	font-size: 150%;
-	font-weight: bold;
-	background-color: #d9d8d1;
-}
-
-div.page_header a:visited, a.header {
-	color: #0000cc;
-}
-
-div.page_header a:hover {
-	color: #880000;
-}
-
-div.page_nav {
-	padding: 8px;
-}
-
-div.page_nav a:visited {
-	color: #0000cc;
-}
-
-div.page_path {
-	padding: 8px;
-	font-weight: bold;
-	border: solid #d9d8d1;
-	border-width: 0px 0px 1px;
-}
-
-div.cachetime {
-	float: left;
-	margin-right: 10px;
-	color: #555555;
-}
-
-div.page_footer {
-	height: 17px;
-	padding: 4px 8px;
-	background-color: #d9d8d1;
-}
-
-div.page_footer_text {
-	float: left;
-	color: #555555;
-	font-style: italic;
-}
-
-div#generating_info {
-	margin: 4px;
-	font-size: smaller;
-	text-align: center;
-	color: #505050;
-}
-
-div.page_body {
-	padding: 8px;
-	font-family: monospace;
-}
-
-div.title, a.title {
-	display: block;
-	padding: 6px 8px;
-	font-weight: bold;
-	background-color: #edece6;
-	text-decoration: none;
-	color: #000000;
-}
-
-div.readme {
-	padding: 8px;
-}
-
-a.title:hover {
-	background-color: #d9d8d1;
-}
-
-div.title_text {
-	padding: 6px 0px;
-	border: solid #d9d8d1;
-	border-width: 0px 0px 1px;
-	font-family: monospace;
-}
-
-div.log_body {
-	padding: 8px 8px 8px 150px;
-}
-
-span.age {
-	position: relative;
-	float: left;
-	width: 142px;
-	font-style: italic;
-}
-
-span.signoff {
-	color: #888888;
-}
-
-div.log_link {
-	padding: 0px 8px;
-	font-size: 70%;
-	font-family: sans-serif;
-	font-style: normal;
-	position: relative;
-	float: left;
-	width: 136px;
-}
-
-div.list_head {
-	padding: 6px 8px 4px;
-	border: solid #d9d8d1;
-	border-width: 1px 0px 0px;
-	font-style: italic;
-}
-
-.author_date, .author {
-	font-style: italic;
-}
-
-div.author_date {
-	padding: 8px;
-	border: solid #d9d8d1;
-	border-width: 0px 0px 1px 0px;
-}
-
-a.list {
-	text-decoration: none;
-	color: #000000;
-}
-
-a.subject, a.name {
-	font-weight: bold;
-}
-
-table.tags a.subject {
-	font-weight: normal;
-}
-
-a.list:hover {
-	text-decoration: underline;
-	color: #880000;
-}
-
-a.text {
-	text-decoration: none;
-	color: #0000cc;
-}
-
-a.text:visited {
-	text-decoration: none;
-	color: #880000;
-}
-
-a.text:hover {
-	text-decoration: underline;
-	color: #880000;
-}
-
-table {
-	padding: 8px 4px;
-	border-spacing: 0;
-}
-
-table.diff_tree {
-	font-family: monospace;
-}
-
-table.combined.diff_tree th {
-	text-align: center;
-}
-
-table.combined.diff_tree td {
-	padding-right: 24px;
-}
-
-table.combined.diff_tree th.link,
-table.combined.diff_tree td.link {
-	padding: 0px 2px;
-}
-
-table.combined.diff_tree td.nochange a {
-	color: #6666ff;
-}
-
-table.combined.diff_tree td.nochange a:hover,
-table.combined.diff_tree td.nochange a:visited {
-	color: #d06666;
-}
-
-table.blame {
-	border-collapse: collapse;
-}
-
-table.blame td {
-	padding: 0px 5px;
-	font-size: 100%;
-	vertical-align: top;
-}
-
-th {
-	padding: 2px 5px;
-	font-size: 100%;
-	text-align: left;
-}
-
-/* do not change row style on hover for 'blame' view */
-tr.light,
-table.blame .light:hover {
-	background-color: #ffffff;
-}
-
-tr.dark,
-table.blame .dark:hover {
-	background-color: #f6f6f0;
-}
-
-/* currently both use the same, but it can change */
-tr.light:hover,
-tr.dark:hover {
-	background-color: #edece6;
-}
-
-/* boundary commits in 'blame' view */
-/* and commits without "previous" */
-tr.boundary td.sha1,
-tr.no-previous td.linenr {
-	font-weight: bold;
-}
-
-/* for 'blame_incremental', during processing */
-tr.color1 { background-color: #f6fff6; }
-tr.color2 { background-color: #f6f6ff; }
-tr.color3 { background-color: #fff6f6; }
-
-td {
-	padding: 2px 5px;
-	font-size: 100%;
-	vertical-align: top;
-}
-
-td.link, td.selflink {
-	padding: 2px 5px;
-	font-family: sans-serif;
-	font-size: 70%;
-}
-
-td.selflink {
-	padding-right: 0px;
-}
-
-td.sha1 {
-	font-family: monospace;
-}
-
-.error {
-	color: red;
-	background-color: yellow;
-}
-
-td.current_head {
-	text-decoration: underline;
-}
-
-table.diff_tree span.file_status.new {
-	color: #008000;
-}
-
-table.diff_tree span.file_status.deleted {
-	color: #c00000;
-}
-
-table.diff_tree span.file_status.moved,
-table.diff_tree span.file_status.mode_chnge {
-	color: #777777;
-}
-
-table.diff_tree span.file_status.copied {
-  color: #70a070;
-}
-
-/* noage: "No commits" */
-table.project_list td.noage {
-	color: #808080;
-	font-style: italic;
-}
-
-/* age2: 60*60*24*2 <= age */
-table.project_list td.age2, table.blame td.age2 {
-	font-style: italic;
-}
-
-/* age1: 60*60*2 <= age < 60*60*24*2 */
-table.project_list td.age1 {
-	color: #009900;
-	font-style: italic;
-}
-
-table.blame td.age1 {
-	color: #009900;
-	background: transparent;
-}
-
-/* age0: age < 60*60*2 */
-table.project_list td.age0 {
-	color: #009900;
-	font-style: italic;
-	font-weight: bold;
-}
-
-table.blame td.age0 {
-	color: #009900;
-	background: transparent;
-	font-weight: bold;
-}
-
-td.pre, div.pre, div.diff {
-	font-family: monospace;
-	font-size: 12px;
-	white-space: pre;
-}
-
-td.mode {
-	font-family: monospace;
-}
-
-/* progress of blame_interactive */
-div#progress_bar {
-	height: 2px;
-	margin-bottom: -2px;
-	background-color: #d8d9d0;
-}
-div#progress_info {
-	float: right;
-	text-align: right;
-}
-
-/* format of (optional) objects size in 'tree' view */
-td.size {
-	font-family: monospace;
-	text-align: right;
-}
-
-/* styling of diffs (patchsets): commitdiff and blobdiff views */
-div.diff.header,
-div.diff.extended_header {
-	white-space: normal;
-}
-
-div.diff.header {
-	font-weight: bold;
-
-	background-color: #edece6;
-
-	margin-top: 4px;
-	padding: 4px 0px 2px 0px;
-	border: solid #d9d8d1;
-	border-width: 1px 0px 1px 0px;
-}
-
-div.diff.header a.path {
-	text-decoration: underline;
-}
-
-div.diff.extended_header,
-div.diff.extended_header a.path,
-div.diff.extended_header a.hash {
-	color: #777777;
-}
-
-div.diff.extended_header .info {
-	color: #b0b0b0;
-}
-
-div.diff.extended_header {
-	background-color: #f6f5ee;
-	padding: 2px 0px 2px 0px;
-}
-
-div.diff a.list,
-div.diff a.path,
-div.diff a.hash {
-	text-decoration: none;
-}
-
-div.diff a.list:hover,
-div.diff a.path:hover,
-div.diff a.hash:hover {
-	text-decoration: underline;
-}
-
-div.diff.to_file a.path,
-div.diff.to_file {
-	color: #007000;
-}
-
-div.diff.add {
-	color: #008800;
-}
-
-div.diff.from_file a.path,
-div.diff.from_file {
-	color: #aa0000;
-}
-
-div.diff.rem {
-	color: #cc0000;
-}
-
-div.diff.chunk_header a,
-div.diff.chunk_header {
-	color: #990099;
-}
-
-div.diff.chunk_header {
-	border: dotted #ffe0ff;
-	border-width: 1px 0px 0px 0px;
-	margin-top: 2px;
-}
-
-div.diff.chunk_header span.chunk_info {
-	background-color: #ffeeff;
-}
-
-div.diff.chunk_header span.section {
-	color: #aa22aa;
-}
-
-div.diff.incomplete {
-	color: #cccccc;
-}
-
-div.diff.nodifferences {
-	font-weight: bold;
-	color: #600000;
-}
-
-div.index_include {
-	border: solid #d9d8d1;
-	border-width: 0px 0px 1px;
-	padding: 12px 8px;
-}
-
-div.search {
-	font-size: 100%;
-	font-weight: normal;
-	margin: 4px 8px;
-	float: right;
-	top: 56px;
-	right: 12px
-}
-
-p.projsearch {
-	text-align: center;
-}
-
-td.linenr {
-	text-align: right;
-}
-
-a.linenr {
-	color: #999999;
-	text-decoration: none
-}
-
-a.rss_logo {
-	float: right;
-	padding: 3px 0px;
-	width: 35px;
-	line-height: 10px;
-	border: 1px solid;
-	border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e;
-	color: #ffffff;
-	background-color: #ff6600;
-	font-weight: bold;
-	font-family: sans-serif;
-	font-size: 70%;
-	text-align: center;
-	text-decoration: none;
-}
-
-a.rss_logo:hover {
-	background-color: #ee5500;
-}
-
-a.rss_logo.generic {
-	background-color: #ff8800;
-}
-
-a.rss_logo.generic:hover {
-	background-color: #ee7700;
-}
-
-span.refs span {
-	padding: 0px 4px;
-	font-size: 70%;
-	font-weight: normal;
-	border: 1px solid;
-	background-color: #ffaaff;
-	border-color: #ffccff #ff00ee #ff00ee #ffccff;
-}
-
-span.refs span a {
-	text-decoration: none;
-	color: inherit;
-}
-
-span.refs span a:hover {
-	text-decoration: underline;
-}
-
-span.refs span.indirect {
-	font-style: italic;
-}
-
-span.refs span.ref {
-	background-color: #aaaaff;
-	border-color: #ccccff #0033cc #0033cc #ccccff;
-}
-
-span.refs span.tag {
-	background-color: #ffffaa;
-	border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
-}
-
-span.refs span.head {
-	background-color: #aaffaa;
-	border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
-}
-
-span.atnight {
-	color: #cc0000;
-}
-
-span.match {
-	color: #e00000;
-}
-
-div.binary {
-	font-style: italic;
-}
-
-div.remote {
-	margin: .5em;
-	border: 1px solid #d9d8d1;
-	display: inline-block;
-}
-
-/* Style definition generated by highlight 2.4.5, http://www.andre-simon.de/ */
-
-/* Highlighting theme definition: */
-
-.num    { color:#2928ff; }
-.esc    { color:#ff00ff; }
-.str    { color:#ff0000; }
-.dstr   { color:#818100; }
-.slc    { color:#838183; font-style:italic; }
-.com    { color:#838183; font-style:italic; }
-.dir    { color:#008200; }
-.sym    { color:#000000; }
-.line   { color:#555555; }
-.kwa    { color:#000000; font-weight:bold; }
-.kwb    { color:#830000; }
-.kwc    { color:#000000; font-weight:bold; }
-.kwd    { color:#010181; }
diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java
index 31b5677..16a0e9b 100644
--- a/src/com/gitblit/utils/JGitUtils.java
+++ b/src/com/gitblit/utils/JGitUtils.java
@@ -349,7 +349,7 @@
 			Collections.sort(list);
 			Collections.reverse(list);
 			if (maxCount > 0 && list.size() > maxCount) {
-				list = list.subList(0, maxCount);
+				list = new ArrayList<RefModel>(list.subList(0, maxCount));
 			}
 		} catch (IOException e) {
 			LOGGER.error("Failed to retrieve " + refs, e);
diff --git a/src/com/gitblit/wicket/pages/BlobPage.java b/src/com/gitblit/wicket/pages/BlobPage.java
index cfbfaa4..324a74e 100644
--- a/src/com/gitblit/wicket/pages/BlobPage.java
+++ b/src/com/gitblit/wicket/pages/BlobPage.java
@@ -29,7 +29,7 @@
 
 		// blob page links
 		add(new Label("historyLink", "history"));
-		add(new Label("rawLink", "download"));
+		add(new Label("rawLink", "raw"));
 		add(new Label("headLink", "HEAD"));
 
 		add(new LinkPanel("shortlog", "title", commit.getShortMessage(), CommitPage.class, newCommitParameter()));
diff --git a/src/com/gitblit/wicket/pages/ShortLogPage.html b/src/com/gitblit/wicket/pages/ShortLogPage.html
index 5afc6cd..ffc0a67 100644
--- a/src/com/gitblit/wicket/pages/ShortLogPage.html
+++ b/src/com/gitblit/wicket/pages/ShortLogPage.html
@@ -15,8 +15,8 @@
          		<td class="date"><span wicket:id="commitDate"></span></td>
          		<td class="author"><span wicket:id="commitAuthor"></span></td>
          		<td><div wicket:id="commitShortMessage"></div></td>
-         		<td><div wicket:id="commitRefs"></div></td>         		
-         		<td><span wicket:id="commitLinks"></span></td>
+         		<td class="rightAlign"><div wicket:id="commitRefs"></div></td>         		
+         		<td class="rightAlign"><span wicket:id="commitLinks"></span></td>
        		</tr>
     	</tbody>
 	</table>	
diff --git a/src/com/gitblit/wicket/pages/SummaryPage.html b/src/com/gitblit/wicket/pages/SummaryPage.html
index be00143..9ed6929 100644
--- a/src/com/gitblit/wicket/pages/SummaryPage.html
+++ b/src/com/gitblit/wicket/pages/SummaryPage.html
@@ -10,7 +10,7 @@
 	<div>
 		<!-- Repository Activity Chart -->	
 		<div style="width:50%;float:right;">
-			<img style="padding-top:8px;" wicket:id="commitsChart" />
+			<img class="activityGraph" wicket:id="commitsChart" />
 		</div>	
 	
 		<!-- Repository info -->
@@ -32,48 +32,46 @@
          		<td class="date"><span wicket:id="commitDate"></span></td>
          		<td class="author"><span wicket:id="commitAuthor"></span></td>
          		<td><div wicket:id="commitShortMessage"></div></td>
-         		<td><div wicket:id="commitRefs"></div></td>
-         		<td><span wicket:id="commitLinks"></span></td>
+         		<td class="rightAlign"><div wicket:id="commitRefs"></div></td>
+         		<td class="rightAlign"><span wicket:id="commitLinks"></span></td>
        		</tr>
     	</tbody>
 	</table>	
 	<div class="pager" wicket:id="shortlogMore"></div>
 
-	<!-- Open additional graphs body -->
-	<div style="width:25%;float:right;">
-	</div>
-	
-	<!-- Open Tags and Heads body -->
-	<div style="width:65%">
-	
-	<!-- tags -->
-	<div class="header" wicket:id="tags"></div>	
+	<!-- Open Heads Body -->
+	<div style="width:34%;float:right;">
+		<!-- heads -->
+		<div class="header" wicket:id="heads"></div>	
 		<table style="width:100%" class="pretty">
 			<tbody>
-       			<tr wicket:id="tag">
-         			<td class="date"><span wicket:id="tagDate"></span></td>
-         			<td><b><div wicket:id="tagName"></div></b></td>
-         			<td><div wicket:id="tagDescription"></div></td>
-         			<td><span wicket:id="tagLinks"></span></td>
-       			</tr>
-    		</tbody>
+   				<tr wicket:id="head">
+       				<td class="date"><span wicket:id="headDate"></span></td>
+       				<td><div wicket:id="headName"></div></td>
+       				<td class="rightAlign"><span wicket:id="headLinks"></span></td>
+   				</tr>
+   			</tbody>
 		</table>
-	<div class="pager" wicket:id="tagsMore"></div>
-
-
-	<!-- heads -->
-	<div class="header" wicket:id="heads"></div>	
-	<table style="width:100%" class="pretty">
-		<tbody>
-   			<tr wicket:id="head">
-       			<td class="date"><span wicket:id="headDate"></span></td>
-       			<td><div wicket:id="headName"></div></td>
-       			<td><span wicket:id="headLinks"></span></td>
-   			</tr>
-   		</tbody>
-	</table>
+		<div class="pager" wicket:id="allHeads"></div>
+		<!-- Close Heads Body -->
+	</div>
 	
-	<!-- Close Tags and Heads Body -->
+	<!-- Open Tags body -->
+	<div style="width:65%">
+		<!-- tags -->
+		<div class="header" wicket:id="tags"></div>	
+			<table style="width:100%" class="pretty">
+				<tbody>
+       				<tr wicket:id="tag">
+         				<td class="date"><span wicket:id="tagDate"></span></td>
+         				<td><b><div wicket:id="tagName"></div></b></td>
+         				<td><div wicket:id="tagDescription"></div></td>
+         				<td class="rightAlign"><span wicket:id="tagLinks"></span></td>
+       				</tr>
+    			</tbody>
+			</table>
+		<div class="pager" wicket:id="allTags"></div>	
+	<!-- Close Tags Body -->
 	</div>
 	
 	<!-- footer -->
diff --git a/src/com/gitblit/wicket/pages/SummaryPage.java b/src/com/gitblit/wicket/pages/SummaryPage.java
index 318e3c9..507ba24 100644
--- a/src/com/gitblit/wicket/pages/SummaryPage.java
+++ b/src/com/gitblit/wicket/pages/SummaryPage.java
@@ -31,6 +31,7 @@
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.models.Metric;
 import com.gitblit.wicket.models.RefModel;
+import com.gitblit.wicket.panels.AnnotatedTagLinksPanel;
 import com.gitblit.wicket.panels.HeadLinksPanel;
 import com.gitblit.wicket.panels.RefsPanel;
 import com.gitblit.wicket.panels.ShortLogLinksPanel;
@@ -40,7 +41,20 @@
 
 	public SummaryPage(PageParameters params) {
 		super(params, "summary");
+		
+		int numCommitsDef = 20;
+		int numRefsDef = 5;
+		
+		int numberCommits = StoredSettings.getInteger("summaryCommitCount", numCommitsDef);
+		if (numberCommits <= 0) {
+			numberCommits = numCommitsDef;
+		}
 
+		int numberRefs = StoredSettings.getInteger("summaryRefsCount", numRefsDef);
+		if (numberRefs <= 0) {
+			numberRefs = numRefsDef;
+		}
+		
 		Repository r = getRepository();
 		final Map<ObjectId, List<String>> allRefs = JGitUtils.getAllRefs(r);
 
@@ -55,12 +69,10 @@
 		add(new Label("repositoryLastChange", lastchange));
 		add(new Label("repositoryCloneUrl", cloneurl));
 
-		int summaryCount = 16;
-
 		// shortlog
 		add(new LinkPanel("shortlog", "title", "shortlog", ShortLogPage.class, newRepositoryParameter()));
 
-		List<RevCommit> commits = JGitUtils.getRevLog(r, summaryCount);
+		List<RevCommit> commits = JGitUtils.getRevLog(r, numberCommits);
 		ListDataProvider<RevCommit> dp = new ListDataProvider<RevCommit>(commits);
 		DataView<RevCommit> shortlogView = new DataView<RevCommit>("commit", dp) {
 			private static final long serialVersionUID = 1L;
@@ -92,10 +104,14 @@
 			}
 		};
 		add(shortlogView);
-		add(new LinkPanel("shortlogMore", "link", "more...", ShortLogPage.class, newRepositoryParameter()));
+		if (commits.size() < numberCommits) {
+			add(new Label("shortlogMore", "").setVisible(false));
+		} else {
+			add(new LinkPanel("shortlogMore", "link", "more...", ShortLogPage.class, newRepositoryParameter()));
+		}
 
 		// tags
-		List<RefModel> tags = JGitUtils.getTags(r, summaryCount);
+		List<RefModel> tags = JGitUtils.getTags(r, numberRefs);
 		add(new LinkPanel("tags", "title", "tags", TagsPage.class, newRepositoryParameter()));
 
 		ListDataProvider<RefModel> tagsDp = new ListDataProvider<RefModel>(tags);
@@ -111,24 +127,28 @@
 				item.add(new LinkPanel("tagName", "list name", entry.getDisplayName(), CommitPage.class, newCommitParameter(entry.getCommitId().getName())));
 
 				if (entry.getCommitId().equals(entry.getObjectId())) {
-					// lightweight tag on commit object
+					// simple tag
 					item.add(new Label("tagDescription", ""));
+					item.add(new TagLinksPanel("tagLinks", repositoryName, entry));
 				} else {
-					// tag object
+					// annotated tag
 					item.add(new LinkPanel("tagDescription", "list subject", entry.getShortLog(), TagPage.class, newCommitParameter(entry.getObjectId().getName())));
+					item.add(new AnnotatedTagLinksPanel("tagLinks", repositoryName, entry));
 				}
-
-				item.add(new TagLinksPanel("tagLinks", repositoryName, entry));
 
 				setAlternatingBackground(item, counter);
 				counter++;
 			}
 		};
 		add(tagView);
-		add(new LinkPanel("tagsMore", "link", "more...", TagsPage.class, newRepositoryParameter()));
+		if (tags.size() < numberRefs) {
+			add(new Label("allTags", "").setVisible(false));
+		} else {
+			add(new LinkPanel("allTags", "link", "all tags...", TagsPage.class, newRepositoryParameter()));
+		}
 
 		// heads
-		List<RefModel> heads = JGitUtils.getHeads(r, summaryCount);
+		List<RefModel> heads = JGitUtils.getHeads(r, numberRefs);
 		add(new LinkPanel("heads", "title", "heads", HeadsPage.class, newRepositoryParameter()));
 
 		ListDataProvider<RefModel> headsDp = new ListDataProvider<RefModel>(heads);
@@ -150,7 +170,12 @@
 			}
 		};
 		add(headsView);
-
+		if (heads.size() < numberRefs) {
+			add(new Label("allHeads", "").setVisible(false));
+		} else {
+			add(new LinkPanel("allHeads", "link", "all heads...", HeadsPage.class, newRepositoryParameter()));
+		}
+		
 		// Display an activity line graph
 		insertActivityGraph(r);
 
diff --git a/src/com/gitblit/wicket/pages/TagPage.html b/src/com/gitblit/wicket/pages/TagPage.html
index 6041185..f86becf 100644
--- a/src/com/gitblit/wicket/pages/TagPage.html
+++ b/src/com/gitblit/wicket/pages/TagPage.html
@@ -8,17 +8,17 @@
 	<div wicket:id="pageLinks"></div>
 
 	<!-- summary header -->
-	<div class="header" wicket:id="commit"></div>
+	<div style="padding-top: 5px;" class="header" wicket:id="commit"></div>
 	
 	<!-- commit info -->
-	<table>
+	<table class="plain">
 		<tr><th>object</th><td><span wicket:id="tagId">Message goes here</span></td></tr>
 		<tr><th>author</th><td><span wicket:id="tagAuthor">Message goes here</span></td></tr>
 		<tr><th></th><td><span wicket:id="tagDate">Message goes here</span></td></tr>
 	</table>
 	
 	<!--  full message -->
-	<div class="commit_message" wicket:id="fullMessage"></div>
+	<div style="border-bottom:0px;" class="commit_message" wicket:id="fullMessage"></div>
 	
 	<!-- footer -->
 	<div wicket:id="pageFooter"></div>
diff --git a/src/com/gitblit/wicket/pages/TagsPage.html b/src/com/gitblit/wicket/pages/TagsPage.html
index a3f7d39..e5899c5 100644
--- a/src/com/gitblit/wicket/pages/TagsPage.html
+++ b/src/com/gitblit/wicket/pages/TagsPage.html
@@ -8,14 +8,14 @@
 	<div wicket:id="pageLinks"></div>
 
 	<!-- shortlog -->	
-	<div class="header" wicket:id="summary"></div>	
-	<table>
+	<div style="margin-top:5px;" class="header" wicket:id="summary"></div>	
+	<table class="pretty">
 		<tbody>
        		<tr wicket:id="tag">
          		<td class="date"><span wicket:id="tagDate"></span></td>
          		<td><b><div wicket:id="tagName"></div></b></td>
          		<td><div wicket:id="tagDescription"></div></td>
-         		<td><span wicket:id="tagLinks"></span></td>
+         		<td class="rightAlign"><span wicket:id="tagLinks"></span></td>
        		</tr>
     	</tbody>
 	</table>	
diff --git a/src/com/gitblit/wicket/pages/TagsPage.java b/src/com/gitblit/wicket/pages/TagsPage.java
index 012d712..5cfd1af 100644
--- a/src/com/gitblit/wicket/pages/TagsPage.java
+++ b/src/com/gitblit/wicket/pages/TagsPage.java
@@ -13,6 +13,7 @@
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.RepositoryPage;
 import com.gitblit.wicket.models.RefModel;
+import com.gitblit.wicket.panels.AnnotatedTagLinksPanel;
 import com.gitblit.wicket.panels.TagLinksPanel;
 
 
@@ -39,14 +40,14 @@
 				item.add(new LinkPanel("tagName", "list name", entry.getDisplayName(), CommitPage.class, newCommitParameter(entry.getObjectId().getName())));
 
 				if (entry.getCommitId().equals(entry.getObjectId())) {
-					// lightweight tag on commit object
+					// simple tag on commit object
 					item.add(new Label("tagDescription", ""));
+					item.add(new TagLinksPanel("tagLinks", repositoryName, entry));
 				} else {
-					// tag object
+					// annotated tag
 					item.add(new LinkPanel("tagDescription", "list subject", entry.getShortLog(), TagPage.class, newCommitParameter(entry.getObjectId().getName())));
+					item.add(new AnnotatedTagLinksPanel("tagLinks", repositoryName, entry));
 				}
-
-				item.add(new TagLinksPanel("tagLinks", repositoryName, entry));
 
 				setAlternatingBackground(item, counter);
 				counter++;
diff --git a/src/com/gitblit/wicket/pages/TreePage.html b/src/com/gitblit/wicket/pages/TreePage.html
index 197ac94..34806bb 100644
--- a/src/com/gitblit/wicket/pages/TreePage.html
+++ b/src/com/gitblit/wicket/pages/TreePage.html
@@ -24,7 +24,7 @@
 			<td><span wicket:id="pathName"></span></td>			
 			<td class="size"><span wicket:id="pathSize"></span></td>
 			<td class="mode"><span wicket:id="pathPermissions"></span></td>
-			<td><span wicket:id="treeLinks"></span></td>
+			<td class="rightAlign"><span wicket:id="treeLinks"></span></td>
 		</tr>
 	</table>
 	
diff --git a/src/com/gitblit/wicket/pages/TreePage.java b/src/com/gitblit/wicket/pages/TreePage.java
index cce18be..2ac04b7 100644
--- a/src/com/gitblit/wicket/pages/TreePage.java
+++ b/src/com/gitblit/wicket/pages/TreePage.java
@@ -17,6 +17,7 @@
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.models.PathModel;
 import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
+import com.gitblit.wicket.panels.TreeBlobLinksPanel;
 import com.gitblit.wicket.panels.TreeLinksPanel;
 
 
@@ -64,12 +65,13 @@
 						// folder/tree link
 						item.add(new Label("pathSize", ""));
 						item.add(new LinkPanel("pathName", null, entry.name, TreePage.class, newPathParameter(entry.path)));
+						item.add(new TreeLinksPanel("treeLinks", repositoryName, entry));
 					} else {
 						// blob link
 						item.add(new Label("pathSize", byteFormat.format(entry.size)));
 						item.add(new LinkPanel("pathName", "list", entry.name, BlobPage.class, newPathParameter(entry.path)));
+						item.add(new TreeBlobLinksPanel("treeLinks", repositoryName, entry));
 					}
-					item.add(new TreeLinksPanel("treeLinks", repositoryName, entry));
 				}
 				String clazz = counter % 2 == 0 ? "dark" : "light";
 				WicketUtils.setCssClass(item, clazz);
diff --git a/src/com/gitblit/wicket/panels/AnnotatedTagLinksPanel.html b/src/com/gitblit/wicket/panels/AnnotatedTagLinksPanel.html
new file mode 100644
index 0000000..4b1d599
--- /dev/null
+++ b/src/com/gitblit/wicket/panels/AnnotatedTagLinksPanel.html
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<wicket:panel>
+	<div class="link">
+		<span wicket:id="tag"></span> | <span wicket:id="commit"></span> | <span wicket:id="shortlog"></span>
+	</div>	
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/panels/AnnotatedTagLinksPanel.java b/src/com/gitblit/wicket/panels/AnnotatedTagLinksPanel.java
new file mode 100644
index 0000000..79c6c63
--- /dev/null
+++ b/src/com/gitblit/wicket/panels/AnnotatedTagLinksPanel.java
@@ -0,0 +1,23 @@
+package com.gitblit.wicket.panels;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.panel.Panel;
+
+import com.gitblit.wicket.LinkPanel;
+import com.gitblit.wicket.models.RefModel;
+import com.gitblit.wicket.pages.CommitPage;
+import com.gitblit.wicket.pages.ShortLogPage;
+import com.gitblit.wicket.pages.TagPage;
+
+
+public class AnnotatedTagLinksPanel extends Panel {
+
+	private static final long serialVersionUID = 1L;
+
+	public AnnotatedTagLinksPanel(String id, String repositoryName, RefModel tag) {
+		super(id);
+		add(new LinkPanel("tag", null, "tag", TagPage.class, new PageParameters("p=" + repositoryName + ",h=" + tag.getObjectId().getName())));
+		add(new LinkPanel("commit", null, "commit", CommitPage.class, new PageParameters("p=" + repositoryName + ",h=" + tag.getCommitId().getName())));
+		add(new LinkPanel("shortlog", null, "shortlog", ShortLogPage.class, new PageParameters("p=" + repositoryName + ",h=" + tag.getName())));
+	}
+}
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/panels/PageFooter.html b/src/com/gitblit/wicket/panels/PageFooter.html
index 305b6bc..be1971c 100644
--- a/src/com/gitblit/wicket/panels/PageFooter.html
+++ b/src/com/gitblit/wicket/panels/PageFooter.html
@@ -3,9 +3,10 @@
 <wicket:panel>
 	<div class="page_footer">
 		<div style="float:right">
+			<span wicket:id="gbVersion"></span> | 
 			<a title="about git:blit" href="about">About Git:Blit</a>
 		</div>
 		<div wicket:id="footerText"></div>
-	</div>	
+	</div>
 </wicket:panel>
 </html>
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/panels/PageFooter.java b/src/com/gitblit/wicket/panels/PageFooter.java
index b727408..b7440e8 100644
--- a/src/com/gitblit/wicket/panels/PageFooter.java
+++ b/src/com/gitblit/wicket/panels/PageFooter.java
@@ -3,6 +3,7 @@
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.panel.Panel;
 
+import com.gitblit.Constants;
 import com.gitblit.StoredSettings;
 
 
@@ -17,6 +18,7 @@
 	public PageFooter(String id, String description) {
 		super(id);		
 		add(new Label("footerText", description));
+		add(new Label("gbVersion", "v" + Constants.VERSION));
 		if (StoredSettings.getBoolean("aggressiveGC", false)) {
 			System.gc();
 		}
diff --git a/src/com/gitblit/wicket/panels/PageHeader.html b/src/com/gitblit/wicket/panels/PageHeader.html
index 982a897..827adb4 100644
--- a/src/com/gitblit/wicket/panels/PageHeader.html
+++ b/src/com/gitblit/wicket/panels/PageHeader.html
@@ -4,7 +4,7 @@
 	<head>
     	<title wicket:id="title">Message goes here</title>
     	<link rel="stylesheet" type="text/css" href="gitblit.css"/>
-    	<link rel="shortcut icon" href="git-favicon.png" type="image/png" />
+    	<link rel="shortcut icon" href="gitblt-favicon.png" type="image/png" />
 	</head>
 	
 	<div class="page_header">
diff --git a/src/com/gitblit/wicket/panels/PageLinksPanel.html b/src/com/gitblit/wicket/panels/PageLinksPanel.html
index 18e271e..5a2f8ec 100644
--- a/src/com/gitblit/wicket/panels/PageLinksPanel.html
+++ b/src/com/gitblit/wicket/panels/PageLinksPanel.html
@@ -3,7 +3,7 @@
 <wicket:panel>
 	<!-- page nav links -->	
 	<div class="page_nav">
-		<span wicket:id="summary"></span> | <span wicket:id="shortlog"></span> | <span wicket:id="commit"></span> | <span wicket:id="commitdiff"></span> | <span wicket:id="tree"></span>
+		<span wicket:id="summary"></span> | <span wicket:id="shortlog"></span> | <span wicket:id="tags"></span> | <span wicket:id="commit"></span> | <span wicket:id="commitdiff"></span> | <span wicket:id="tree"></span>
 	</div>	
 </wicket:panel>
 </html>
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/panels/PageLinksPanel.java b/src/com/gitblit/wicket/panels/PageLinksPanel.java
index 7447e76..02491bc 100644
--- a/src/com/gitblit/wicket/panels/PageLinksPanel.java
+++ b/src/com/gitblit/wicket/panels/PageLinksPanel.java
@@ -8,6 +8,7 @@
 import com.gitblit.wicket.pages.CommitPage;
 import com.gitblit.wicket.pages.ShortLogPage;
 import com.gitblit.wicket.pages.SummaryPage;
+import com.gitblit.wicket.pages.TagsPage;
 import com.gitblit.wicket.pages.TreePage;
 
 
@@ -30,6 +31,13 @@
 		} else {
 			add(new LinkPanel("shortlog", null, "shortlog", ShortLogPage.class, new PageParameters("p=" + repositoryName)));
 		}
+		
+		// tags
+		if (pageName.equals("tags")) {
+			add(new Label("tags", pageName));
+		} else {
+			add(new LinkPanel("tags", null, "tags", TagsPage.class, new PageParameters("p=" + repositoryName)));
+		}
 
 		// commit
 		if (pageName.equals("commit")) {
diff --git a/src/com/gitblit/wicket/panels/TreeBlobLinksPanel.html b/src/com/gitblit/wicket/panels/TreeBlobLinksPanel.html
new file mode 100644
index 0000000..14a064f
--- /dev/null
+++ b/src/com/gitblit/wicket/panels/TreeBlobLinksPanel.html
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<wicket:panel>
+	<div class="link">
+		<span wicket:id="link"></span> | <span wicket:id="raw"></span> | <span wicket:id="history"></span>
+	</div>	
+</wicket:panel>
+</html>
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/panels/TreeBlobLinksPanel.java b/src/com/gitblit/wicket/panels/TreeBlobLinksPanel.java
new file mode 100644
index 0000000..9c7eb58
--- /dev/null
+++ b/src/com/gitblit/wicket/panels/TreeBlobLinksPanel.java
@@ -0,0 +1,22 @@
+package com.gitblit.wicket.panels;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+
+import com.gitblit.wicket.LinkPanel;
+import com.gitblit.wicket.models.PathModel;
+import com.gitblit.wicket.pages.BlobPage;
+
+
+public class TreeBlobLinksPanel extends Panel {
+
+	private static final long serialVersionUID = 1L;
+
+	public TreeBlobLinksPanel(String id, String repositoryName, PathModel path) {
+		super(id);
+		add(new LinkPanel("link", null, "view", BlobPage.class, new PageParameters("p=" + repositoryName + ",h=" + path.commitId + ",f=" + path.path)));
+		add(new Label("raw", "raw"));
+		add(new Label("history", "history"));
+	}
+}
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/panels/TreeLinksPanel.html b/src/com/gitblit/wicket/panels/TreeLinksPanel.html
index d0c3b7f..00d8131 100644
--- a/src/com/gitblit/wicket/panels/TreeLinksPanel.html
+++ b/src/com/gitblit/wicket/panels/TreeLinksPanel.html
@@ -2,7 +2,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
 <wicket:panel>
 	<div class="link">
-		<span wicket:id="link"></span> | <span wicket:id="history"></span> | <span wicket:id="raw"></span>
+		<span wicket:id="link"></span> | <span wicket:id="history"></span>
 	</div>	
 </wicket:panel>
 </html>
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/panels/TreeLinksPanel.java b/src/com/gitblit/wicket/panels/TreeLinksPanel.java
index ce918b9..af4bbb1 100644
--- a/src/com/gitblit/wicket/panels/TreeLinksPanel.java
+++ b/src/com/gitblit/wicket/panels/TreeLinksPanel.java
@@ -6,7 +6,6 @@
 
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.models.PathModel;
-import com.gitblit.wicket.pages.BlobPage;
 import com.gitblit.wicket.pages.TreePage;
 
 
@@ -16,14 +15,7 @@
 
 	public TreeLinksPanel(String id, String repositoryName, PathModel path) {
 		super(id);
-		if (path.isTree()) {
-			add(new LinkPanel("link", null, "tree", TreePage.class, new PageParameters("p=" + repositoryName + ",h=" + path.commitId + ",f=" + path.path)));
-			add(new Label("history", "history"));
-			add(new Label("raw", ""));
-		} else {
-			add(new LinkPanel("link", null, "view", BlobPage.class, new PageParameters("p=" + repositoryName + ",h=" + path.commitId + ",f=" + path.path)));
-			add(new Label("history", "history"));
-			add(new Label("raw", "download"));
-		}
+		add(new LinkPanel("link", null, "tree", TreePage.class, new PageParameters("p=" + repositoryName + ",h=" + path.commitId + ",f=" + path.path)));
+		add(new Label("history", "history"));
 	}
 }
\ No newline at end of file

--
Gitblit v1.9.1