summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2007-11-03 13:05:12 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-11-03 13:05:12 (UTC)
commit601c76eb15a298ac9529f4dded5dd4297b9c3768 (patch) (unidiff)
treecb81350b624cb7ef0cdf9cdd23804cc674b8b5d5
parente36365c6841703e569fcaf20bfc415ee0489c76f (diff)
downloadcgit-601c76eb15a298ac9529f4dded5dd4297b9c3768.zip
cgit-601c76eb15a298ac9529f4dded5dd4297b9c3768.tar.gz
cgit-601c76eb15a298ac9529f4dded5dd4297b9c3768.tar.bz2
Do not require javascript-enabled clients
A simple submit-button is all that's required to make the branch selector drop-down work on any client, so lets add one. Noticed-by: Olivier Ramonat <olivier@ramonat.fr> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.css12
-rw-r--r--ui-shared.c4
2 files changed, 16 insertions, 0 deletions
diff --git a/cgit.css b/cgit.css
index 1e768b8..1b2e9d6 100644
--- a/cgit.css
+++ b/cgit.css
@@ -89,96 +89,108 @@ div#sidebar {
89div#logo { 89div#logo {
90 margin: 0px; 90 margin: 0px;
91 padding: 4px 0px 4px 0px; 91 padding: 4px 0px 4px 0px;
92 text-align: center; 92 text-align: center;
93 background-color: #ccc; 93 background-color: #ccc;
94 border-top: solid 1px #eee; 94 border-top: solid 1px #eee;
95 border-left: solid 1px #eee; 95 border-left: solid 1px #eee;
96 border-right: solid 1px #aaa; 96 border-right: solid 1px #aaa;
97 border-bottom: solid 1px #aaa; 97 border-bottom: solid 1px #aaa;
98} 98}
99 99
100div#sidebar div.infobox { 100div#sidebar div.infobox {
101 margin: 0px 0px 0px 0px; 101 margin: 0px 0px 0px 0px;
102 padding: 0.5em; 102 padding: 0.5em;
103 text-align: left; 103 text-align: left;
104 background-color: #ccc; 104 background-color: #ccc;
105 border-top: solid 1px #eee; 105 border-top: solid 1px #eee;
106 border-left: solid 1px #eee; 106 border-left: solid 1px #eee;
107 border-right: solid 1px #aaa; 107 border-right: solid 1px #aaa;
108 border-bottom: solid 1px #aaa; 108 border-bottom: solid 1px #aaa;
109} 109}
110 110
111div#sidebar div.infobox h1 { 111div#sidebar div.infobox h1 {
112 font-size: 11pt; 112 font-size: 11pt;
113 font-weight: bold; 113 font-weight: bold;
114 margin: 0px; 114 margin: 0px;
115} 115}
116 116
117div#sidebar div.infobox a.menu { 117div#sidebar div.infobox a.menu {
118 display: block; 118 display: block;
119 background-color: #ccc; 119 background-color: #ccc;
120 padding: 0.1em 0.5em; 120 padding: 0.1em 0.5em;
121 text-decoration: none; 121 text-decoration: none;
122} 122}
123 123
124div#sidebar div.infobox a.menu:hover { 124div#sidebar div.infobox a.menu:hover {
125 background-color: #bbb; 125 background-color: #bbb;
126 text-decoration: none; 126 text-decoration: none;
127} 127}
128 128
129div#sidebar div.infobox select { 129div#sidebar div.infobox select {
130 width: 100%; 130 width: 100%;
131 border: solid 1px #aaa; 131 border: solid 1px #aaa;
132 background-color: #bbb; 132 background-color: #bbb;
133 margin: 2px 0px 0px 0px; 133 margin: 2px 0px 0px 0px;
134 padding: 0px; 134 padding: 0px;
135} 135}
136 136
137td#branch-dropdown-cell {
138 width: 99%;
139}
140
141input#switch-btn {
142 width: 20px;
143 border: solid 1px #aaa;
144 background-color: #bbb;
145 margin: 2px 0px 0px 0px;
146 padding: 0px;
147}
148
137div#sidebar div.infobox input.txt { 149div#sidebar div.infobox input.txt {
138 width: 100%; 150 width: 100%;
139 border: solid 1px #aaa; 151 border: solid 1px #aaa;
140 background-color: #bbb; 152 background-color: #bbb;
141 margin: 2px 0px 0px 0px; 153 margin: 2px 0px 0px 0px;
142 padding: 0; 154 padding: 0;
143} 155}
144 156
145table#grid { 157table#grid {
146 margin: 0px; 158 margin: 0px;
147} 159}
148 160
149td#content { 161td#content {
150 vertical-align: top; 162 vertical-align: top;
151 padding: 1em 2em 1em 1em; 163 padding: 1em 2em 1em 1em;
152 border: none; 164 border: none;
153} 165}
154 166
155div#summary { 167div#summary {
156 vertical-align: top; 168 vertical-align: top;
157 margin-bottom: 1em; 169 margin-bottom: 1em;
158} 170}
159 171
160table#downloads { 172table#downloads {
161 float: right; 173 float: right;
162 border-collapse: collapse; 174 border-collapse: collapse;
163 border: solid 1px #777; 175 border: solid 1px #777;
164 margin-left: 0.5em; 176 margin-left: 0.5em;
165 margin-bottom: 0.5em; 177 margin-bottom: 0.5em;
166} 178}
167 179
168table#downloads th { 180table#downloads th {
169 background-color: #ccc; 181 background-color: #ccc;
170} 182}
171 183
172div#blob { 184div#blob {
173 border: solid 1px black; 185 border: solid 1px black;
174} 186}
175 187
176div.error { 188div.error {
177 color: red; 189 color: red;
178 font-weight: bold; 190 font-weight: bold;
179 margin: 1em 2em; 191 margin: 1em 2em;
180} 192}
181 193
182a.ls-blob, a.ls-dir, a.ls-mod { 194a.ls-blob, a.ls-dir, a.ls-mod {
183 font-family: monospace; 195 font-family: monospace;
184} 196}
diff --git a/ui-shared.c b/ui-shared.c
index ca8dd3d..bd34cc3 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -442,92 +442,96 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page)
442 if (cgit_query_sha2) 442 if (cgit_query_sha2)
443 html_hidden("id2", cgit_query_sha2); 443 html_hidden("id2", cgit_query_sha2);
444 444
445 if (incl_search) { 445 if (incl_search) {
446 if (cgit_query_grep) 446 if (cgit_query_grep)
447 html_hidden("qt", cgit_query_grep); 447 html_hidden("qt", cgit_query_grep);
448 if (cgit_query_search) 448 if (cgit_query_search)
449 html_hidden("q", cgit_query_search); 449 html_hidden("q", cgit_query_search);
450 } 450 }
451} 451}
452 452
453void cgit_print_pageheader(char *title, int show_search) 453void cgit_print_pageheader(char *title, int show_search)
454{ 454{
455 static const char *default_info = "This is cgit, a fast webinterface for git repositories"; 455 static const char *default_info = "This is cgit, a fast webinterface for git repositories";
456 int header = 0; 456 int header = 0;
457 457
458 html("<div id='sidebar'>\n"); 458 html("<div id='sidebar'>\n");
459 html("<a href='"); 459 html("<a href='");
460 html_attr(cgit_rooturl()); 460 html_attr(cgit_rooturl());
461 htmlf("'><div id='logo'><img src='%s' alt='cgit'/></div></a>\n", 461 htmlf("'><div id='logo'><img src='%s' alt='cgit'/></div></a>\n",
462 cgit_logo); 462 cgit_logo);
463 html("<div class='infobox'>"); 463 html("<div class='infobox'>");
464 if (cgit_query_repo) { 464 if (cgit_query_repo) {
465 html("<h1>"); 465 html("<h1>");
466 html_txt(strrpart(cgit_repo->name, 20)); 466 html_txt(strrpart(cgit_repo->name, 20));
467 html("</h1>\n"); 467 html("</h1>\n");
468 html_txt(cgit_repo->desc); 468 html_txt(cgit_repo->desc);
469 if (cgit_repo->owner) { 469 if (cgit_repo->owner) {
470 html("<p>\n<h1>owner</h1>\n"); 470 html("<p>\n<h1>owner</h1>\n");
471 html_txt(cgit_repo->owner); 471 html_txt(cgit_repo->owner);
472 } 472 }
473 html("<p>\n<h1>navigate</h1>\n"); 473 html("<p>\n<h1>navigate</h1>\n");
474 reporevlink(NULL, "summary", NULL, "menu", cgit_query_head, 474 reporevlink(NULL, "summary", NULL, "menu", cgit_query_head,
475 NULL, NULL); 475 NULL, NULL);
476 cgit_log_link("log", NULL, "menu", cgit_query_head, NULL, NULL, 476 cgit_log_link("log", NULL, "menu", cgit_query_head, NULL, NULL,
477 0, NULL, NULL); 477 0, NULL, NULL);
478 cgit_tree_link("tree", NULL, "menu", cgit_query_head, 478 cgit_tree_link("tree", NULL, "menu", cgit_query_head,
479 cgit_query_sha1, NULL); 479 cgit_query_sha1, NULL);
480 cgit_commit_link("commit", NULL, "menu", cgit_query_head, 480 cgit_commit_link("commit", NULL, "menu", cgit_query_head,
481 cgit_query_sha1); 481 cgit_query_sha1);
482 cgit_diff_link("diff", NULL, "menu", cgit_query_head, 482 cgit_diff_link("diff", NULL, "menu", cgit_query_head,
483 cgit_query_sha1, cgit_query_sha2, NULL); 483 cgit_query_sha1, cgit_query_sha2, NULL);
484 484
485 for_each_ref(print_archive_ref, &header); 485 for_each_ref(print_archive_ref, &header);
486 486
487 html("<p>\n<h1>branch</h1>\n"); 487 html("<p>\n<h1>branch</h1>\n");
488 html("<form method='get' action=''>\n"); 488 html("<form method='get' action=''>\n");
489 add_hidden_formfields(0, 1, cgit_query_page); 489 add_hidden_formfields(0, 1, cgit_query_page);
490 html("<table class='grid'><tr><td id='branch-dropdown-cell'>");
490 html("<select name='h' onchange='this.form.submit();'>\n"); 491 html("<select name='h' onchange='this.form.submit();'>\n");
491 for_each_branch_ref(print_branch_option, cgit_query_head); 492 for_each_branch_ref(print_branch_option, cgit_query_head);
492 html("</select>\n"); 493 html("</select>\n");
494 html("</td><td>");
495 html("<input type='submit' id='switch-btn' value='..'>\n");
496 html("</td></tr></table>");
493 html("</form>\n"); 497 html("</form>\n");
494 498
495 html("<p>\n<h1>search</h1>\n"); 499 html("<p>\n<h1>search</h1>\n");
496 html("<form method='get' action='"); 500 html("<form method='get' action='");
497 if (cgit_virtual_root) 501 if (cgit_virtual_root)
498 html_attr(cgit_fileurl(cgit_query_repo, "log", 502 html_attr(cgit_fileurl(cgit_query_repo, "log",
499 cgit_query_path, NULL)); 503 cgit_query_path, NULL));
500 html("'>\n"); 504 html("'>\n");
501 add_hidden_formfields(1, 0, "log"); 505 add_hidden_formfields(1, 0, "log");
502 html("<select name='qt'>\n"); 506 html("<select name='qt'>\n");
503 html_option("grep", "log msg", cgit_query_grep); 507 html_option("grep", "log msg", cgit_query_grep);
504 html_option("author", "author", cgit_query_grep); 508 html_option("author", "author", cgit_query_grep);
505 html_option("committer", "committer", cgit_query_grep); 509 html_option("committer", "committer", cgit_query_grep);
506 html("</select>\n"); 510 html("</select>\n");
507 html("<input class='txt' type='text' name='q' value='"); 511 html("<input class='txt' type='text' name='q' value='");
508 html_attr(cgit_query_search); 512 html_attr(cgit_query_search);
509 html("'/>\n"); 513 html("'/>\n");
510 html("</form>\n"); 514 html("</form>\n");
511 } else { 515 } else {
512 if (!cgit_index_info || html_include(cgit_index_info)) 516 if (!cgit_index_info || html_include(cgit_index_info))
513 html(default_info); 517 html(default_info);
514 } 518 }
515 519
516 html("</div>\n"); 520 html("</div>\n");
517 521
518 html("</div>\n<table class='grid'><tr><td id='content'>\n"); 522 html("</div>\n<table class='grid'><tr><td id='content'>\n");
519} 523}
520 524
521 525
522void cgit_print_snapshot_start(const char *mimetype, const char *filename, 526void cgit_print_snapshot_start(const char *mimetype, const char *filename,
523 struct cacheitem *item) 527 struct cacheitem *item)
524{ 528{
525 htmlf("Content-Type: %s\n", mimetype); 529 htmlf("Content-Type: %s\n", mimetype);
526 htmlf("Content-Disposition: inline; filename=\"%s\"\n", filename); 530 htmlf("Content-Disposition: inline; filename=\"%s\"\n", filename);
527 htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime)); 531 htmlf("Last-Modified: %s\n", http_date(item->st.st_mtime));
528 htmlf("Expires: %s\n", http_date(item->st.st_mtime + 532 htmlf("Expires: %s\n", http_date(item->st.st_mtime +
529 ttl_seconds(item->ttl))); 533 ttl_seconds(item->ttl)));
530 html("\n"); 534 html("\n");
531} 535}
532 536
533/* vim:set sw=8: */ 537/* vim:set sw=8: */