diff options
Diffstat (limited to 'ui-shared.c')
| -rw-r--r-- | ui-shared.c | 154 | 
1 files changed, 86 insertions, 68 deletions
| diff --git a/ui-shared.c b/ui-shared.c index aa65988..bb08c4a 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -7,6 +7,7 @@   */  #include "cgit.h" +#include "cmd.h"  #include "html.h"  const char cgit_doctype[] = @@ -388,7 +389,7 @@ void cgit_print_docstart(struct cgit_context *ctx)  void cgit_print_docend()  { -	html("</td>\n</tr>\n</table>\n</body>\n</html>\n"); +	html("</div>\n</body>\n</html>\n");  }  int print_branch_option(const char *refname, const unsigned char *sha1, @@ -465,75 +466,83 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page)  	}  } -void cgit_print_pageheader(struct cgit_context *ctx) +char *hc(struct cgit_cmd *cmd, const char *page)  { -	static const char *default_info = "This is cgit, a fast webinterface for git repositories"; -	int header = 0; -	char *url; - -	html("<table id='layout' summary=''>\n"); -	html("<tr><td id='sidebar'>\n"); -	html("<table class='sidebar' cellspacing='0' summary=''>\n"); -	html("<tr><td class='sidebar'>\n<a href='"); -	html_attr(cgit_rooturl()); -	htmlf("'><img src='%s' alt='cgit'/></a>\n", -	      ctx->cfg.logo); -	html("</td></tr>\n<tr><td class='sidebar'>\n"); -	if (ctx->repo) { -		html("<h1 class='first'>"); -		html_txt(strrpart(ctx->repo->name, 20)); -		html("</h1>\n"); -		html_txt(ctx->repo->desc); -		if (ctx->repo->owner) { -			html("<h1>owner</h1>\n"); -			html_txt(ctx->repo->owner); -		} -		html("<h1>navigate</h1>\n"); -		reporevlink(NULL, "summary", NULL, "menu", ctx->qry.head, -			    NULL, NULL); -		cgit_log_link("log", NULL, "menu", ctx->qry.head, NULL, NULL, -			      0, NULL, NULL); -		cgit_tree_link("tree", NULL, "menu", ctx->qry.head, -			       ctx->qry.sha1, NULL); -		cgit_commit_link("commit", NULL, "menu", ctx->qry.head, -			      ctx->qry.sha1); -		cgit_diff_link("diff", NULL, "menu", ctx->qry.head, -			       ctx->qry.sha1, ctx->qry.sha2, NULL); -		cgit_patch_link("patch", NULL, "menu", ctx->qry.head, -				ctx->qry.sha1); +	return (strcmp(cmd->name, page) ? NULL : "active"); +} -		for_each_ref(print_archive_ref, &header); +void cgit_print_pageheader(struct cgit_context *ctx) +{ +	struct cgit_cmd *cmd = cgit_get_cmd(ctx); -		if (ctx->repo->clone_url || ctx->cfg.clone_prefix) { -			html("<h1>clone</h1>\n"); -			if (ctx->repo->clone_url) -				url = ctx->repo->clone_url; -			else -				url = fmt("%s%s", ctx->cfg.clone_prefix, -					  ctx->repo->url); -			html("<a class='menu' href='"); -			html_attr(url); -			html("' title='"); -			html_attr(url); -			html("'>\n"); -			html_txt(strrpart(url, 20)); -			html("</a>\n"); -		} +	html("<table id='header'>\n"); +	html("<tr>\n"); +	html("<td class='logo' rowspan='2'><a href='"); +	if (ctx->cfg.logo_link) +		html_attr(ctx->cfg.logo_link); +	else +		html_attr(cgit_rooturl()); +	html("'><img src='"); +	html_attr(ctx->cfg.logo); +	html("'/></a></td>\n"); -		html("<h1>branch</h1>\n"); +	html("<td class='main'>"); +	if (ctx->repo) { +/* +		html("<a href='"); +		html_attr(cgit_rooturl()); +		html("'>index</a> : "); +*/ +		reporevlink(NULL, ctx->repo->name, NULL, hc(cmd, "summary"), +			    ctx->qry.head, NULL, NULL); +		html(" : "); +		html_txt(ctx->qry.page); +		html("</td><td class='form'>");  		html("<form method='get' action=''>\n");  		add_hidden_formfields(0, 1, ctx->qry.page); -//		html("<table summary='branch selector' class='grid'><tr><td id='branch-dropdown-cell'>");  		html("<select name='h' onchange='this.form.submit();'>\n");  		for_each_branch_ref(print_branch_option, ctx->qry.head); -		html("</select>\n"); -//		html("</td><td>"); -		html("<noscript><input type='submit' id='switch-btn' value='switch'/></noscript>\n"); -//		html("</td></tr></table>"); -		html("</form>\n"); +		html("</select> "); +		html("<input type='submit' name='' value='switch'/>"); +		html("</form>"); +	} else +		html_txt(ctx->cfg.root_title); +	html("</td>\n"); -		html("<h1>search</h1>\n"); -		html("<form method='get' action='"); +	html("<tr><td class='sub'"); +	if (ctx->repo) { +		html(" colspan='2'>"); +		html_txt(ctx->repo->desc); +	} +/* +	else if (ctx->cfg.root_subtitle) +		html_txt(ctx->cfg.root_subtitle); +*/ +	else { +		html(">"); +		html_txt("a fast webinterface for the git dscm"); +	} +	html("</td></tr>\n"); + +	html("</tr>\n"); +	html("</table>\n"); + +	html("<table class='tabs'><tr><td>\n"); +	if (ctx->repo) { +		reporevlink(NULL, "summary", NULL, hc(cmd, "summary"), +			    ctx->qry.head, NULL, NULL); +		cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head, +			       ctx->qry.sha1, NULL); +		cgit_log_link("log", NULL, hc(cmd, "log"), ctx->qry.head, +			      NULL, NULL, 0, NULL, NULL); +		cgit_tree_link("tree", NULL, hc(cmd, "tree"), ctx->qry.head, +			       ctx->qry.sha1, NULL); +		cgit_commit_link("commit", NULL, hc(cmd, "commit"), +				 ctx->qry.head, ctx->qry.sha1); +		cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head, +			       ctx->qry.sha1, ctx->qry.sha2, NULL); +		html("</td><td class='form'>"); +		html("<form class='right' method='get' action='");  		if (ctx->cfg.virtual_root)  			html_attr(cgit_fileurl(ctx->qry.repo, "log",  					       ctx->qry.path, NULL)); @@ -544,18 +553,27 @@ void cgit_print_pageheader(struct cgit_context *ctx)  		html_option("author", "author", ctx->qry.grep);  		html_option("committer", "committer", ctx->qry.grep);  		html("</select>\n"); -		html("<input class='txt' type='text' name='q' value='"); +		html("<input class='txt' type='text' size='10' name='q' value='");  		html_attr(ctx->qry.search);  		html("'/>\n"); +		html("<input type='submit' value='search'/>\n");  		html("</form>\n");  	} else { -		if (!ctx->cfg.index_info || html_include(ctx->cfg.index_info)) -			html(default_info); +		html("<a class='active' href='"); +		html_attr(cgit_rooturl()); +		html("'>index</a>\n"); +		html("</td><td class='form'>"); +		html("<form method='get' action='"); +		html_attr(cgit_rooturl()); +		html("'>\n"); +		html("<input type='text' name='q' size='10' value='"); +		html_attr(ctx->qry.search); +		html("'/>\n"); +		html("<input type='submit' value='search'/>\n"); +		html("</form>");  	} - -	html("</td></tr></table></td>\n"); - -	html("<td id='content'>\n"); +	html("</td></tr></table>\n"); +	html("<div class='content'>");  }  void cgit_print_filemode(unsigned short mode) | 
