author | Johan Herland <johan@herland.net> | 2010-06-09 23:09:28 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2010-06-19 08:40:22 (UTC) |
commit | c93ef96aaf77437abeb552bd9e30973f90365f3a (patch) (unidiff) | |
tree | dec445607efb7a9996d008330517730fc0482de3 | |
parent | c8e3295469bd3b8e38a9ea4478d517d3861e6c93 (diff) | |
download | cgit-c93ef96aaf77437abeb552bd9e30973f90365f3a.zip cgit-c93ef96aaf77437abeb552bd9e30973f90365f3a.tar.gz cgit-c93ef96aaf77437abeb552bd9e30973f90365f3a.tar.bz2 |
ui-shared: Display path limit directly beneath tab bar in relevant pages
Design-wise, the path is shown by "expanding" the grey border between the
tab bar and the content area of the page to house the current path limit.
This is only displayed on pages where the path limit is relevant, and only
when a path limit is in effect.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | cgit.css | 8 | ||||
-rw-r--r-- | ui-shared.c | 6 |
2 files changed, 14 insertions, 0 deletions
@@ -57,96 +57,104 @@ table#header td.form select { | |||
57 | font-size: 90%; | 57 | font-size: 90%; |
58 | } | 58 | } |
59 | 59 | ||
60 | table#header td.sub { | 60 | table#header td.sub { |
61 | color: #777; | 61 | color: #777; |
62 | border-top: solid 1px #ccc; | 62 | border-top: solid 1px #ccc; |
63 | padding-left: 10px; | 63 | padding-left: 10px; |
64 | } | 64 | } |
65 | 65 | ||
66 | table.tabs { | 66 | table.tabs { |
67 | /* border-bottom: solid 2px #ccc; */ | 67 | /* border-bottom: solid 2px #ccc; */ |
68 | border-collapse: collapse; | 68 | border-collapse: collapse; |
69 | margin-top: 2em; | 69 | margin-top: 2em; |
70 | margin-bottom: 0px; | 70 | margin-bottom: 0px; |
71 | width: 100%; | 71 | width: 100%; |
72 | } | 72 | } |
73 | 73 | ||
74 | table.tabs td { | 74 | table.tabs td { |
75 | padding: 0px 1em; | 75 | padding: 0px 1em; |
76 | vertical-align: bottom; | 76 | vertical-align: bottom; |
77 | } | 77 | } |
78 | 78 | ||
79 | table.tabs td a { | 79 | table.tabs td a { |
80 | padding: 2px 0.75em; | 80 | padding: 2px 0.75em; |
81 | color: #777; | 81 | color: #777; |
82 | font-size: 110%; | 82 | font-size: 110%; |
83 | } | 83 | } |
84 | 84 | ||
85 | table.tabs td a.active { | 85 | table.tabs td a.active { |
86 | color: #000; | 86 | color: #000; |
87 | background-color: #ccc; | 87 | background-color: #ccc; |
88 | } | 88 | } |
89 | 89 | ||
90 | table.tabs td.form { | 90 | table.tabs td.form { |
91 | text-align: right; | 91 | text-align: right; |
92 | } | 92 | } |
93 | 93 | ||
94 | table.tabs td.form form { | 94 | table.tabs td.form form { |
95 | padding-bottom: 2px; | 95 | padding-bottom: 2px; |
96 | font-size: 90%; | 96 | font-size: 90%; |
97 | white-space: nowrap; | 97 | white-space: nowrap; |
98 | } | 98 | } |
99 | 99 | ||
100 | table.tabs td.form input, | 100 | table.tabs td.form input, |
101 | table.tabs td.form select { | 101 | table.tabs td.form select { |
102 | font-size: 90%; | 102 | font-size: 90%; |
103 | } | 103 | } |
104 | 104 | ||
105 | div.path { | ||
106 | margin: 0px; | ||
107 | padding: 5px 2em 2px 2em; | ||
108 | color: #000; | ||
109 | background-color: #ccc; | ||
110 | font-weight: bold; | ||
111 | } | ||
112 | |||
105 | div.content { | 113 | div.content { |
106 | margin: 0px; | 114 | margin: 0px; |
107 | padding: 2em; | 115 | padding: 2em; |
108 | border-top: solid 3px #ccc; | 116 | border-top: solid 3px #ccc; |
109 | border-bottom: solid 3px #ccc; | 117 | border-bottom: solid 3px #ccc; |
110 | } | 118 | } |
111 | 119 | ||
112 | 120 | ||
113 | table.list { | 121 | table.list { |
114 | width: 100%; | 122 | width: 100%; |
115 | border: none; | 123 | border: none; |
116 | border-collapse: collapse; | 124 | border-collapse: collapse; |
117 | } | 125 | } |
118 | 126 | ||
119 | table.list tr { | 127 | table.list tr { |
120 | background: white; | 128 | background: white; |
121 | } | 129 | } |
122 | 130 | ||
123 | table.list tr.logheader { | 131 | table.list tr.logheader { |
124 | background: #eee; | 132 | background: #eee; |
125 | } | 133 | } |
126 | 134 | ||
127 | table.list tr:hover { | 135 | table.list tr:hover { |
128 | background: #eee; | 136 | background: #eee; |
129 | } | 137 | } |
130 | 138 | ||
131 | table.list tr.nohover:hover { | 139 | table.list tr.nohover:hover { |
132 | background: white; | 140 | background: white; |
133 | } | 141 | } |
134 | 142 | ||
135 | table.list th { | 143 | table.list th { |
136 | font-weight: bold; | 144 | font-weight: bold; |
137 | /* color: #888; | 145 | /* color: #888; |
138 | border-top: dashed 1px #888; | 146 | border-top: dashed 1px #888; |
139 | border-bottom: dashed 1px #888; | 147 | border-bottom: dashed 1px #888; |
140 | */ | 148 | */ |
141 | padding: 0.1em 0.5em 0.05em 0.5em; | 149 | padding: 0.1em 0.5em 0.05em 0.5em; |
142 | vertical-align: baseline; | 150 | vertical-align: baseline; |
143 | } | 151 | } |
144 | 152 | ||
145 | table.list td { | 153 | table.list td { |
146 | border: none; | 154 | border: none; |
147 | padding: 0.1em 0.5em 0.1em 0.5em; | 155 | padding: 0.1em 0.5em 0.1em 0.5em; |
148 | } | 156 | } |
149 | 157 | ||
150 | table.list td.logsubject { | 158 | table.list td.logsubject { |
151 | font-family: monospace; | 159 | font-family: monospace; |
152 | font-weight: bold; | 160 | font-weight: bold; |
diff --git a/ui-shared.c b/ui-shared.c index 3d5030b..bc14e70 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -712,86 +712,92 @@ void cgit_print_pageheader(struct cgit_context *ctx) | |||
712 | cgit_log_link("log", NULL, hc(ctx, "log"), ctx->qry.head, | 712 | cgit_log_link("log", NULL, hc(ctx, "log"), ctx->qry.head, |
713 | NULL, NULL, 0, NULL, NULL, ctx->qry.showmsg); | 713 | NULL, NULL, 0, NULL, NULL, ctx->qry.showmsg); |
714 | cgit_tree_link("tree", NULL, hc(ctx, "tree"), ctx->qry.head, | 714 | cgit_tree_link("tree", NULL, hc(ctx, "tree"), ctx->qry.head, |
715 | ctx->qry.sha1, NULL); | 715 | ctx->qry.sha1, NULL); |
716 | cgit_commit_link("commit", NULL, hc(ctx, "commit"), | 716 | cgit_commit_link("commit", NULL, hc(ctx, "commit"), |
717 | ctx->qry.head, ctx->qry.sha1, 0); | 717 | ctx->qry.head, ctx->qry.sha1, 0); |
718 | cgit_diff_link("diff", NULL, hc(ctx, "diff"), ctx->qry.head, | 718 | cgit_diff_link("diff", NULL, hc(ctx, "diff"), ctx->qry.head, |
719 | ctx->qry.sha1, ctx->qry.sha2, NULL, 0); | 719 | ctx->qry.sha1, ctx->qry.sha2, NULL, 0); |
720 | if (ctx->repo->max_stats) | 720 | if (ctx->repo->max_stats) |
721 | cgit_stats_link("stats", NULL, hc(ctx, "stats"), | 721 | cgit_stats_link("stats", NULL, hc(ctx, "stats"), |
722 | ctx->qry.head, NULL); | 722 | ctx->qry.head, NULL); |
723 | if (ctx->repo->readme) | 723 | if (ctx->repo->readme) |
724 | reporevlink("about", "about", NULL, | 724 | reporevlink("about", "about", NULL, |
725 | hc(ctx, "about"), ctx->qry.head, NULL, | 725 | hc(ctx, "about"), ctx->qry.head, NULL, |
726 | NULL); | 726 | NULL); |
727 | html("</td><td class='form'>"); | 727 | html("</td><td class='form'>"); |
728 | html("<form class='right' method='get' action='"); | 728 | html("<form class='right' method='get' action='"); |
729 | if (ctx->cfg.virtual_root) | 729 | if (ctx->cfg.virtual_root) |
730 | html_url_path(cgit_fileurl(ctx->qry.repo, "log", | 730 | html_url_path(cgit_fileurl(ctx->qry.repo, "log", |
731 | ctx->qry.vpath, NULL)); | 731 | ctx->qry.vpath, NULL)); |
732 | html("'>\n"); | 732 | html("'>\n"); |
733 | cgit_add_hidden_formfields(1, 0, "log"); | 733 | cgit_add_hidden_formfields(1, 0, "log"); |
734 | html("<select name='qt'>\n"); | 734 | html("<select name='qt'>\n"); |
735 | html_option("grep", "log msg", ctx->qry.grep); | 735 | html_option("grep", "log msg", ctx->qry.grep); |
736 | html_option("author", "author", ctx->qry.grep); | 736 | html_option("author", "author", ctx->qry.grep); |
737 | html_option("committer", "committer", ctx->qry.grep); | 737 | html_option("committer", "committer", ctx->qry.grep); |
738 | html("</select>\n"); | 738 | html("</select>\n"); |
739 | html("<input class='txt' type='text' size='10' name='q' value='"); | 739 | html("<input class='txt' type='text' size='10' name='q' value='"); |
740 | html_attr(ctx->qry.search); | 740 | html_attr(ctx->qry.search); |
741 | html("'/>\n"); | 741 | html("'/>\n"); |
742 | html("<input type='submit' value='search'/>\n"); | 742 | html("<input type='submit' value='search'/>\n"); |
743 | html("</form>\n"); | 743 | html("</form>\n"); |
744 | } else { | 744 | } else { |
745 | site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, 0); | 745 | site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, 0); |
746 | if (ctx->cfg.root_readme) | 746 | if (ctx->cfg.root_readme) |
747 | site_link("about", "about", NULL, hc(ctx, "about"), | 747 | site_link("about", "about", NULL, hc(ctx, "about"), |
748 | NULL, 0); | 748 | NULL, 0); |
749 | html("</td><td class='form'>"); | 749 | html("</td><td class='form'>"); |
750 | html("<form method='get' action='"); | 750 | html("<form method='get' action='"); |
751 | html_attr(cgit_rooturl()); | 751 | html_attr(cgit_rooturl()); |
752 | html("'>\n"); | 752 | html("'>\n"); |
753 | html("<input type='text' name='q' size='10' value='"); | 753 | html("<input type='text' name='q' size='10' value='"); |
754 | html_attr(ctx->qry.search); | 754 | html_attr(ctx->qry.search); |
755 | html("'/>\n"); | 755 | html("'/>\n"); |
756 | html("<input type='submit' value='search'/>\n"); | 756 | html("<input type='submit' value='search'/>\n"); |
757 | html("</form>"); | 757 | html("</form>"); |
758 | } | 758 | } |
759 | html("</td></tr></table>\n"); | 759 | html("</td></tr></table>\n"); |
760 | if (ctx->qry.vpath) { | ||
761 | html("<div class='path'>"); | ||
762 | html("path: "); | ||
763 | html_txt(ctx->qry.vpath); | ||
764 | html("</div>"); | ||
765 | } | ||
760 | html("<div class='content'>"); | 766 | html("<div class='content'>"); |
761 | } | 767 | } |
762 | 768 | ||
763 | void cgit_print_filemode(unsigned short mode) | 769 | void cgit_print_filemode(unsigned short mode) |
764 | { | 770 | { |
765 | if (S_ISDIR(mode)) | 771 | if (S_ISDIR(mode)) |
766 | html("d"); | 772 | html("d"); |
767 | else if (S_ISLNK(mode)) | 773 | else if (S_ISLNK(mode)) |
768 | html("l"); | 774 | html("l"); |
769 | else if (S_ISGITLINK(mode)) | 775 | else if (S_ISGITLINK(mode)) |
770 | html("m"); | 776 | html("m"); |
771 | else | 777 | else |
772 | html("-"); | 778 | html("-"); |
773 | html_fileperm(mode >> 6); | 779 | html_fileperm(mode >> 6); |
774 | html_fileperm(mode >> 3); | 780 | html_fileperm(mode >> 3); |
775 | html_fileperm(mode); | 781 | html_fileperm(mode); |
776 | } | 782 | } |
777 | 783 | ||
778 | void cgit_print_snapshot_links(const char *repo, const char *head, | 784 | void cgit_print_snapshot_links(const char *repo, const char *head, |
779 | const char *hex, int snapshots) | 785 | const char *hex, int snapshots) |
780 | { | 786 | { |
781 | const struct cgit_snapshot_format* f; | 787 | const struct cgit_snapshot_format* f; |
782 | char *prefix; | 788 | char *prefix; |
783 | char *filename; | 789 | char *filename; |
784 | unsigned char sha1[20]; | 790 | unsigned char sha1[20]; |
785 | 791 | ||
786 | if (get_sha1(fmt("refs/tags/%s", hex), sha1) == 0 && | 792 | if (get_sha1(fmt("refs/tags/%s", hex), sha1) == 0 && |
787 | (hex[0] == 'v' || hex[0] == 'V') && isdigit(hex[1])) | 793 | (hex[0] == 'v' || hex[0] == 'V') && isdigit(hex[1])) |
788 | hex++; | 794 | hex++; |
789 | prefix = xstrdup(fmt("%s-%s", cgit_repobasename(repo), hex)); | 795 | prefix = xstrdup(fmt("%s-%s", cgit_repobasename(repo), hex)); |
790 | for (f = cgit_snapshot_formats; f->suffix; f++) { | 796 | for (f = cgit_snapshot_formats; f->suffix; f++) { |
791 | if (!(snapshots & f->bit)) | 797 | if (!(snapshots & f->bit)) |
792 | continue; | 798 | continue; |
793 | filename = fmt("%s%s", prefix, f->suffix); | 799 | filename = fmt("%s%s", prefix, f->suffix); |
794 | cgit_snapshot_link(filename, NULL, NULL, NULL, NULL, filename); | 800 | cgit_snapshot_link(filename, NULL, NULL, NULL, NULL, filename); |
795 | html("<br/>"); | 801 | html("<br/>"); |
796 | } | 802 | } |
797 | } | 803 | } |