cgit

commit b8be028a309381b83abe924f5e8e01cf02b121a2

Author: Lars Hjemli <hjemli@gmail.com>

Add more menuitems on repo pages

In an attempt to get better usability, a set of 'semistatic' menuitems
are added to the page header on all pages except the repository index.

The menuitems (summary, log, files, commit and diff) honours the current
branch and revision. To switch the current branch one can use the branch
links on the summary page.

The backlink to the repository index page is now available by clicking
the static page heading.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>

 cgit.css | 14 ++++++++++++--
 ui-shared.c | 51 +++++++++++++++++++++++++++++++++++++--------------


diff --git a/cgit.css b/cgit.css
index cda437e2d0e48f83a4b42159d9f002477ad49415..9c79c320e9d9aa16c420ad2bef57e7be9461b23d 100644
--- a/cgit.css
+++ b/cgit.css
@@ -95,6 +95,14 @@ 	padding: 0.2em 0.5em;
 	vertical-align: text-bottom;
 }
 
+td#header a {
+	color: #666;
+}
+
+td#header a:hoved {
+	text-decoration: underline;
+}
+
 td#logo {
 	text-align: right;
 	vertical-align: middle;
@@ -116,11 +124,13 @@
 td#crumb a {
 	color: #ccc;
 	background-color: #666;
+	padding: 0em 0.5em 0em 0.5em;
 }
 
 td#crumb a:hover {
-	color: #eee;
-	background-color: #666;
+	color: #666;
+	background-color: #ccc;
+	text-decoration: none;
 }
 
 td#search {




diff --git a/ui-shared.c b/ui-shared.c
index 15d825460f6d604441c0f3746e7ffa478af18cd7..383b8acb353124c85ec2f920971df469013c5a08 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -111,20 +111,24 @@ 			html("/");
 		html_attr(cgit_repo->url);
 		if (cgit_repo->url[strlen(cgit_repo->url) - 1] != '/')
 			html("/");
-		html(page);
-		html("/");
-		if (path)
-			html_attr(path);
+		if (page) {
+			html(page);
+			html("/");
+			if (path)
+				html_attr(path);
+		}
 	} else {
 		html(cgit_script_name);
 		html("?url=");
 		html_attr(cgit_repo->url);
 		if (cgit_repo->url[strlen(cgit_repo->url) - 1] != '/')
 			html("/");
-		html(page);
-		html("/");
-		if (path)
-			html_attr(path);
+		if (page) {
+			html(page);
+			html("/");
+			if (path)
+				html_attr(path);
+		}
 		delim = "&amp;";
 	}
 	if (head && strcmp(head, cgit_repo->defbranch)) {
@@ -279,19 +283,38 @@
 void cgit_print_pageheader(char *title, int show_search)
 {
 	html("<table id='layout'>");
-	html("<tr><td id='header'>");
-	html(cgit_root_title);
-	html("</td><td id='logo'>");
+	html("<tr><td id='header'><a href='");
+	html_attr(cgit_rooturl());
+	html("'>");
+	html_txt(cgit_root_title);
+	html("</a></td><td id='logo'>");
 	html("<a href='");
 	html_attr(cgit_logo_link);
 	htmlf("'><img src='%s' alt='logo'/></a>", cgit_logo);
 	html("</td></tr>");
 	html("<tr><td id='crumb'>");
-	htmlf("<a href='%s'>root</a>", cgit_rooturl());
 	if (cgit_query_repo) {
-		htmlf(" : <a href='%s'>", cgit_repourl(cgit_repo->url));
 		html_txt(cgit_repo->name);
-		htmlf("</a> : %s", title);
+		html(" (");
+		html_txt(cgit_query_head);
+		html(") : &nbsp;");
+		reporevlink(NULL, "summary", NULL, NULL, cgit_query_head,
+			    NULL, NULL);
+		html(" ");
+		cgit_log_link("log", NULL, NULL, cgit_query_head,
+			      cgit_query_sha1, cgit_query_path);
+		html(" ");
+		cgit_tree_link("files", NULL, NULL, cgit_query_head,
+			       cgit_query_sha1, cgit_query_path);
+		html(" ");
+		cgit_commit_link("commit", NULL, NULL, cgit_query_head,
+			      cgit_query_sha1);
+		html(" ");
+		cgit_diff_link("diff", NULL, NULL, cgit_query_head,
+			       cgit_query_sha1, cgit_query_sha2,
+			       cgit_query_path);
+	} else {
+		html_txt("Index of repositories");
 	}
 	html("</td>");
 	html("<td id='search'>");