author | Lars Hjemli <hjemli@gmail.com> | 2007-05-16 08:45:45 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2007-05-16 08:46:59 (UTC) |
commit | c1ad6cb77889880ad0189a689840fbfa6e5cbc80 (patch) (unidiff) | |
tree | 352c32898316a388b582385a5fb3c6c534eaa30a | |
parent | f4f1339fe62fb1a28c147567195a86dd99485e25 (diff) | |
download | cgit-c1ad6cb77889880ad0189a689840fbfa6e5cbc80.zip cgit-c1ad6cb77889880ad0189a689840fbfa6e5cbc80.tar.gz cgit-c1ad6cb77889880ad0189a689840fbfa6e5cbc80.tar.bz2 |
Restrict length of repo description on repolist page
If any repo has a very long description, all repos suffer since the
repo-links in the right-most column gets pushed out of sight.
Fix it by introducing max-repodesc-length parameter in cgitrc, and default
to 60 chars.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | cgit.h | 1 | ||||
-rw-r--r-- | cgitrc | 4 | ||||
-rw-r--r-- | shared.c | 3 | ||||
-rw-r--r-- | ui-repolist.c | 2 |
4 files changed, 9 insertions, 1 deletions
@@ -68,48 +68,49 @@ struct taginfo { | |||
68 | extern const char cgit_version[]; | 68 | extern const char cgit_version[]; |
69 | 69 | ||
70 | extern struct repolist cgit_repolist; | 70 | extern struct repolist cgit_repolist; |
71 | extern struct repoinfo *cgit_repo; | 71 | extern struct repoinfo *cgit_repo; |
72 | 72 | ||
73 | extern char *cgit_root_title; | 73 | extern char *cgit_root_title; |
74 | extern char *cgit_css; | 74 | extern char *cgit_css; |
75 | extern char *cgit_logo; | 75 | extern char *cgit_logo; |
76 | extern char *cgit_logo_link; | 76 | extern char *cgit_logo_link; |
77 | extern char *cgit_module_link; | 77 | extern char *cgit_module_link; |
78 | extern char *cgit_virtual_root; | 78 | extern char *cgit_virtual_root; |
79 | extern char *cgit_script_name; | 79 | extern char *cgit_script_name; |
80 | extern char *cgit_cache_root; | 80 | extern char *cgit_cache_root; |
81 | 81 | ||
82 | extern int cgit_nocache; | 82 | extern int cgit_nocache; |
83 | extern int cgit_snapshots; | 83 | extern int cgit_snapshots; |
84 | extern int cgit_max_lock_attempts; | 84 | extern int cgit_max_lock_attempts; |
85 | extern int cgit_cache_root_ttl; | 85 | extern int cgit_cache_root_ttl; |
86 | extern int cgit_cache_repo_ttl; | 86 | extern int cgit_cache_repo_ttl; |
87 | extern int cgit_cache_dynamic_ttl; | 87 | extern int cgit_cache_dynamic_ttl; |
88 | extern int cgit_cache_static_ttl; | 88 | extern int cgit_cache_static_ttl; |
89 | extern int cgit_cache_max_create_time; | 89 | extern int cgit_cache_max_create_time; |
90 | 90 | ||
91 | extern int cgit_max_msg_len; | 91 | extern int cgit_max_msg_len; |
92 | extern int cgit_max_repodesc_len; | ||
92 | extern int cgit_max_commit_count; | 93 | extern int cgit_max_commit_count; |
93 | 94 | ||
94 | extern char *cgit_repo_name; | 95 | extern char *cgit_repo_name; |
95 | extern char *cgit_repo_desc; | 96 | extern char *cgit_repo_desc; |
96 | extern char *cgit_repo_owner; | 97 | extern char *cgit_repo_owner; |
97 | 98 | ||
98 | extern int cgit_query_has_symref; | 99 | extern int cgit_query_has_symref; |
99 | extern int cgit_query_has_sha1; | 100 | extern int cgit_query_has_sha1; |
100 | 101 | ||
101 | extern char *cgit_querystring; | 102 | extern char *cgit_querystring; |
102 | extern char *cgit_query_repo; | 103 | extern char *cgit_query_repo; |
103 | extern char *cgit_query_page; | 104 | extern char *cgit_query_page; |
104 | extern char *cgit_query_search; | 105 | extern char *cgit_query_search; |
105 | extern char *cgit_query_head; | 106 | extern char *cgit_query_head; |
106 | extern char *cgit_query_sha1; | 107 | extern char *cgit_query_sha1; |
107 | extern char *cgit_query_sha2; | 108 | extern char *cgit_query_sha2; |
108 | extern char *cgit_query_path; | 109 | extern char *cgit_query_path; |
109 | extern char *cgit_query_name; | 110 | extern char *cgit_query_name; |
110 | extern int cgit_query_ofs; | 111 | extern int cgit_query_ofs; |
111 | 112 | ||
112 | extern int htmlfd; | 113 | extern int htmlfd; |
113 | 114 | ||
114 | extern void cgit_global_config_cb(const char *name, const char *value); | 115 | extern void cgit_global_config_cb(const char *name, const char *value); |
115 | extern void cgit_repo_config_cb(const char *name, const char *value); | 116 | extern void cgit_repo_config_cb(const char *name, const char *value); |
@@ -30,48 +30,52 @@ | |||
30 | ## This setting is disabled by default. | 30 | ## This setting is disabled by default. |
31 | #virtual-root=/git | 31 | #virtual-root=/git |
32 | 32 | ||
33 | 33 | ||
34 | ## Set the title printed on the root page | 34 | ## Set the title printed on the root page |
35 | #root-title=Git repository browser | 35 | #root-title=Git repository browser |
36 | 36 | ||
37 | 37 | ||
38 | ## Link to css file | 38 | ## Link to css file |
39 | #css=/cgit/cgit.css | 39 | #css=/cgit/cgit.css |
40 | 40 | ||
41 | 41 | ||
42 | ## Link to logo file | 42 | ## Link to logo file |
43 | #logo=/cgit/git-logo.png | 43 | #logo=/cgit/git-logo.png |
44 | 44 | ||
45 | 45 | ||
46 | ## Url loaded when clicking the logo | 46 | ## Url loaded when clicking the logo |
47 | #logo-link=http://www.kernel.org/pub/software/scm/git/docs/ | 47 | #logo-link=http://www.kernel.org/pub/software/scm/git/docs/ |
48 | 48 | ||
49 | 49 | ||
50 | ## Url loaded when clicking a submodule link | 50 | ## Url loaded when clicking a submodule link |
51 | #module-link=./?repo=%s&page=commit&id=%s | 51 | #module-link=./?repo=%s&page=commit&id=%s |
52 | 52 | ||
53 | 53 | ||
54 | ## Number of chars shown of repo description (in repolist view) | ||
55 | #max-repodesc-length=60 | ||
56 | |||
57 | |||
54 | ## Number of chars shown of commit subject message (in log view) | 58 | ## Number of chars shown of commit subject message (in log view) |
55 | #max-message-length=60 | 59 | #max-message-length=60 |
56 | 60 | ||
57 | 61 | ||
58 | ## Number of commits per page in log view | 62 | ## Number of commits per page in log view |
59 | #max-commit-count=50 | 63 | #max-commit-count=50 |
60 | 64 | ||
61 | 65 | ||
62 | ## Root of cached output | 66 | ## Root of cached output |
63 | #cache-root=/var/cache/cgit | 67 | #cache-root=/var/cache/cgit |
64 | 68 | ||
65 | 69 | ||
66 | ## Include another config-file | 70 | ## Include another config-file |
67 | #include=/var/cgit/repolist | 71 | #include=/var/cgit/repolist |
68 | 72 | ||
69 | ## | 73 | ## |
70 | ## Time-To-Live settings: specifies how long (in minutes) different pages | 74 | ## Time-To-Live settings: specifies how long (in minutes) different pages |
71 | ## should be cached (0 for instant expiration, -1 for immortal pages) | 75 | ## should be cached (0 for instant expiration, -1 for immortal pages) |
72 | ## | 76 | ## |
73 | 77 | ||
74 | ## ttl for root page | 78 | ## ttl for root page |
75 | #cache-root-ttl=5 | 79 | #cache-root-ttl=5 |
76 | 80 | ||
77 | ## ttl for repo summary page | 81 | ## ttl for repo summary page |
@@ -9,48 +9,49 @@ | |||
9 | #include "cgit.h" | 9 | #include "cgit.h" |
10 | 10 | ||
11 | struct repolist cgit_repolist; | 11 | struct repolist cgit_repolist; |
12 | struct repoinfo *cgit_repo; | 12 | struct repoinfo *cgit_repo; |
13 | 13 | ||
14 | char *cgit_root_title = "Git repository browser"; | 14 | char *cgit_root_title = "Git repository browser"; |
15 | char *cgit_css = "/cgit.css"; | 15 | char *cgit_css = "/cgit.css"; |
16 | char *cgit_logo = "/git-logo.png"; | 16 | char *cgit_logo = "/git-logo.png"; |
17 | char *cgit_logo_link = "http://www.kernel.org/pub/software/scm/git/docs/"; | 17 | char *cgit_logo_link = "http://www.kernel.org/pub/software/scm/git/docs/"; |
18 | char *cgit_module_link = "./?repo=%s&page=commit&id=%s"; | 18 | char *cgit_module_link = "./?repo=%s&page=commit&id=%s"; |
19 | char *cgit_virtual_root = NULL; | 19 | char *cgit_virtual_root = NULL; |
20 | char *cgit_script_name = CGIT_SCRIPT_NAME; | 20 | char *cgit_script_name = CGIT_SCRIPT_NAME; |
21 | char *cgit_cache_root = "/var/cache/cgit"; | 21 | char *cgit_cache_root = "/var/cache/cgit"; |
22 | 22 | ||
23 | int cgit_nocache = 0; | 23 | int cgit_nocache = 0; |
24 | int cgit_snapshots = 0; | 24 | int cgit_snapshots = 0; |
25 | int cgit_max_lock_attempts = 5; | 25 | int cgit_max_lock_attempts = 5; |
26 | int cgit_cache_root_ttl = 5; | 26 | int cgit_cache_root_ttl = 5; |
27 | int cgit_cache_repo_ttl = 5; | 27 | int cgit_cache_repo_ttl = 5; |
28 | int cgit_cache_dynamic_ttl = 5; | 28 | int cgit_cache_dynamic_ttl = 5; |
29 | int cgit_cache_static_ttl = -1; | 29 | int cgit_cache_static_ttl = -1; |
30 | int cgit_cache_max_create_time = 5; | 30 | int cgit_cache_max_create_time = 5; |
31 | 31 | ||
32 | int cgit_max_msg_len = 60; | 32 | int cgit_max_msg_len = 60; |
33 | int cgit_max_repodesc_len = 60; | ||
33 | int cgit_max_commit_count = 50; | 34 | int cgit_max_commit_count = 50; |
34 | 35 | ||
35 | int cgit_query_has_symref = 0; | 36 | int cgit_query_has_symref = 0; |
36 | int cgit_query_has_sha1 = 0; | 37 | int cgit_query_has_sha1 = 0; |
37 | 38 | ||
38 | char *cgit_querystring = NULL; | 39 | char *cgit_querystring = NULL; |
39 | char *cgit_query_repo = NULL; | 40 | char *cgit_query_repo = NULL; |
40 | char *cgit_query_page = NULL; | 41 | char *cgit_query_page = NULL; |
41 | char *cgit_query_head = NULL; | 42 | char *cgit_query_head = NULL; |
42 | char *cgit_query_search = NULL; | 43 | char *cgit_query_search = NULL; |
43 | char *cgit_query_sha1 = NULL; | 44 | char *cgit_query_sha1 = NULL; |
44 | char *cgit_query_sha2 = NULL; | 45 | char *cgit_query_sha2 = NULL; |
45 | char *cgit_query_path = NULL; | 46 | char *cgit_query_path = NULL; |
46 | char *cgit_query_name = NULL; | 47 | char *cgit_query_name = NULL; |
47 | int cgit_query_ofs = 0; | 48 | int cgit_query_ofs = 0; |
48 | 49 | ||
49 | int htmlfd = 0; | 50 | int htmlfd = 0; |
50 | 51 | ||
51 | int chk_zero(int result, char *msg) | 52 | int chk_zero(int result, char *msg) |
52 | { | 53 | { |
53 | if (result != 0) | 54 | if (result != 0) |
54 | die("%s: %s", msg, strerror(errno)); | 55 | die("%s: %s", msg, strerror(errno)); |
55 | return result; | 56 | return result; |
56 | } | 57 | } |
@@ -97,48 +98,50 @@ void cgit_global_config_cb(const char *name, const char *value) | |||
97 | else if (!strcmp(name, "logo")) | 98 | else if (!strcmp(name, "logo")) |
98 | cgit_logo = xstrdup(value); | 99 | cgit_logo = xstrdup(value); |
99 | else if (!strcmp(name, "logo-link")) | 100 | else if (!strcmp(name, "logo-link")) |
100 | cgit_logo_link = xstrdup(value); | 101 | cgit_logo_link = xstrdup(value); |
101 | else if (!strcmp(name, "module-link")) | 102 | else if (!strcmp(name, "module-link")) |
102 | cgit_module_link = xstrdup(value); | 103 | cgit_module_link = xstrdup(value); |
103 | else if (!strcmp(name, "virtual-root")) | 104 | else if (!strcmp(name, "virtual-root")) |
104 | cgit_virtual_root = xstrdup(value); | 105 | cgit_virtual_root = xstrdup(value); |
105 | else if (!strcmp(name, "nocache")) | 106 | else if (!strcmp(name, "nocache")) |
106 | cgit_nocache = atoi(value); | 107 | cgit_nocache = atoi(value); |
107 | else if (!strcmp(name, "snapshots")) | 108 | else if (!strcmp(name, "snapshots")) |
108 | cgit_snapshots = atoi(value); | 109 | cgit_snapshots = atoi(value); |
109 | else if (!strcmp(name, "cache-root")) | 110 | else if (!strcmp(name, "cache-root")) |
110 | cgit_cache_root = xstrdup(value); | 111 | cgit_cache_root = xstrdup(value); |
111 | else if (!strcmp(name, "cache-root-ttl")) | 112 | else if (!strcmp(name, "cache-root-ttl")) |
112 | cgit_cache_root_ttl = atoi(value); | 113 | cgit_cache_root_ttl = atoi(value); |
113 | else if (!strcmp(name, "cache-repo-ttl")) | 114 | else if (!strcmp(name, "cache-repo-ttl")) |
114 | cgit_cache_repo_ttl = atoi(value); | 115 | cgit_cache_repo_ttl = atoi(value); |
115 | else if (!strcmp(name, "cache-static-ttl")) | 116 | else if (!strcmp(name, "cache-static-ttl")) |
116 | cgit_cache_static_ttl = atoi(value); | 117 | cgit_cache_static_ttl = atoi(value); |
117 | else if (!strcmp(name, "cache-dynamic-ttl")) | 118 | else if (!strcmp(name, "cache-dynamic-ttl")) |
118 | cgit_cache_dynamic_ttl = atoi(value); | 119 | cgit_cache_dynamic_ttl = atoi(value); |
119 | else if (!strcmp(name, "max-message-length")) | 120 | else if (!strcmp(name, "max-message-length")) |
120 | cgit_max_msg_len = atoi(value); | 121 | cgit_max_msg_len = atoi(value); |
122 | else if (!strcmp(name, "max-repodesc-length")) | ||
123 | cgit_max_repodesc_len = atoi(value); | ||
121 | else if (!strcmp(name, "max-commit-count")) | 124 | else if (!strcmp(name, "max-commit-count")) |
122 | cgit_max_commit_count = atoi(value); | 125 | cgit_max_commit_count = atoi(value); |
123 | else if (!strcmp(name, "repo.url")) | 126 | else if (!strcmp(name, "repo.url")) |
124 | cgit_repo = add_repo(value); | 127 | cgit_repo = add_repo(value); |
125 | else if (!strcmp(name, "repo.name")) | 128 | else if (!strcmp(name, "repo.name")) |
126 | cgit_repo->name = xstrdup(value); | 129 | cgit_repo->name = xstrdup(value); |
127 | else if (cgit_repo && !strcmp(name, "repo.path")) | 130 | else if (cgit_repo && !strcmp(name, "repo.path")) |
128 | cgit_repo->path = xstrdup(value); | 131 | cgit_repo->path = xstrdup(value); |
129 | else if (cgit_repo && !strcmp(name, "repo.desc")) | 132 | else if (cgit_repo && !strcmp(name, "repo.desc")) |
130 | cgit_repo->desc = xstrdup(value); | 133 | cgit_repo->desc = xstrdup(value); |
131 | else if (cgit_repo && !strcmp(name, "repo.owner")) | 134 | else if (cgit_repo && !strcmp(name, "repo.owner")) |
132 | cgit_repo->owner = xstrdup(value); | 135 | cgit_repo->owner = xstrdup(value); |
133 | else if (cgit_repo && !strcmp(name, "repo.defbranch")) | 136 | else if (cgit_repo && !strcmp(name, "repo.defbranch")) |
134 | cgit_repo->defbranch = xstrdup(value); | 137 | cgit_repo->defbranch = xstrdup(value); |
135 | else if (cgit_repo && !strcmp(name, "repo.snapshots")) | 138 | else if (cgit_repo && !strcmp(name, "repo.snapshots")) |
136 | cgit_repo->snapshots = atoi(value); | 139 | cgit_repo->snapshots = atoi(value); |
137 | else if (cgit_repo && !strcmp(name, "repo.module-link")) | 140 | else if (cgit_repo && !strcmp(name, "repo.module-link")) |
138 | cgit_repo->module_link= xstrdup(value); | 141 | cgit_repo->module_link= xstrdup(value); |
139 | else if (!strcmp(name, "include")) | 142 | else if (!strcmp(name, "include")) |
140 | cgit_read_config(value, cgit_global_config_cb); | 143 | cgit_read_config(value, cgit_global_config_cb); |
141 | } | 144 | } |
142 | 145 | ||
143 | void cgit_querystring_cb(const char *name, const char *value) | 146 | void cgit_querystring_cb(const char *name, const char *value) |
144 | { | 147 | { |
diff --git a/ui-repolist.c b/ui-repolist.c index d341193..d7311e4 100644 --- a/ui-repolist.c +++ b/ui-repolist.c | |||
@@ -9,45 +9,45 @@ | |||
9 | #include "cgit.h" | 9 | #include "cgit.h" |
10 | 10 | ||
11 | void cgit_print_repolist(struct cacheitem *item) | 11 | void cgit_print_repolist(struct cacheitem *item) |
12 | { | 12 | { |
13 | struct repoinfo *repo; | 13 | struct repoinfo *repo; |
14 | int i; | 14 | int i; |
15 | 15 | ||
16 | cgit_print_docstart(cgit_root_title, item); | 16 | cgit_print_docstart(cgit_root_title, item); |
17 | cgit_print_pageheader(cgit_root_title, 0); | 17 | cgit_print_pageheader(cgit_root_title, 0); |
18 | 18 | ||
19 | html("<table class='list nowrap'>"); | 19 | html("<table class='list nowrap'>"); |
20 | html("<tr class='nohover'>" | 20 | html("<tr class='nohover'>" |
21 | "<th class='left'>Name</th>" | 21 | "<th class='left'>Name</th>" |
22 | "<th class='left'>Description</th>" | 22 | "<th class='left'>Description</th>" |
23 | "<th class='left'>Owner</th>" | 23 | "<th class='left'>Owner</th>" |
24 | "<th class='left'>Links</th></tr>\n"); | 24 | "<th class='left'>Links</th></tr>\n"); |
25 | 25 | ||
26 | for (i=0; i<cgit_repolist.count; i++) { | 26 | for (i=0; i<cgit_repolist.count; i++) { |
27 | repo = &cgit_repolist.repos[i]; | 27 | repo = &cgit_repolist.repos[i]; |
28 | html("<tr><td>"); | 28 | html("<tr><td>"); |
29 | html_link_open(cgit_repourl(repo->url), NULL, NULL); | 29 | html_link_open(cgit_repourl(repo->url), NULL, NULL); |
30 | html_txt(repo->name); | 30 | html_txt(repo->name); |
31 | html_link_close(); | 31 | html_link_close(); |
32 | html("</td><td>"); | 32 | html("</td><td>"); |
33 | html_txt(repo->desc); | 33 | html_ntxt(cgit_max_repodesc_len, repo->desc); |
34 | html("</td><td>"); | 34 | html("</td><td>"); |
35 | html_txt(repo->owner); | 35 | html_txt(repo->owner); |
36 | html("</td><td>"); | 36 | html("</td><td>"); |
37 | html_link_open(cgit_pageurl(repo->name, "commit", NULL), | 37 | html_link_open(cgit_pageurl(repo->name, "commit", NULL), |
38 | "Commit: display last commit", NULL); | 38 | "Commit: display last commit", NULL); |
39 | html("C</a> "); | 39 | html("C</a> "); |
40 | html_link_open(cgit_pageurl(repo->name, "diff", NULL), | 40 | html_link_open(cgit_pageurl(repo->name, "diff", NULL), |
41 | "Diff: see changes introduced by last commit", NULL); | 41 | "Diff: see changes introduced by last commit", NULL); |
42 | html("D</a> "); | 42 | html("D</a> "); |
43 | html_link_open(cgit_pageurl(repo->name, "log", NULL), | 43 | html_link_open(cgit_pageurl(repo->name, "log", NULL), |
44 | "Log: show history of the main branch", NULL); | 44 | "Log: show history of the main branch", NULL); |
45 | html("L</a> "); | 45 | html("L</a> "); |
46 | html_link_open(cgit_pageurl(repo->name, "tree", NULL), | 46 | html_link_open(cgit_pageurl(repo->name, "tree", NULL), |
47 | "Tree: browse the files in the main branch", NULL); | 47 | "Tree: browse the files in the main branch", NULL); |
48 | html("T</a>"); | 48 | html("T</a>"); |
49 | html("</td></tr>\n"); | 49 | html("</td></tr>\n"); |
50 | } | 50 | } |
51 | html("</table>"); | 51 | html("</table>"); |
52 | cgit_print_docend(); | 52 | cgit_print_docend(); |
53 | } | 53 | } |