author | Lars Hjemli <hjemli@gmail.com> | 2008-02-16 12:56:09 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-02-16 12:56:09 (UTC) |
commit | d1f3bbe9d22029f45a77bb938c176ccc0c827d46 (patch) (side-by-side diff) | |
tree | 3f1741c012763cbc5485f31377abdd9241fbac6b /ui-shared.c | |
parent | b228d4ff82a65fdcd4a7364759fe36a0bdda5978 (diff) | |
download | cgit-d1f3bbe9d22029f45a77bb938c176ccc0c827d46.zip cgit-d1f3bbe9d22029f45a77bb938c176ccc0c827d46.tar.gz cgit-d1f3bbe9d22029f45a77bb938c176ccc0c827d46.tar.bz2 |
Move cgit_repo into cgit_context
This removes the global variable which is used to keep track of the
currently selected repository, and adds a new variable in the cgit_context
structure.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | ui-shared.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/ui-shared.c b/ui-shared.c index b96237d..b9f487a 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -96,120 +96,120 @@ const char *cgit_repobasename(const char *reponame) /* strip trailing slashes */ while(p && rvbuf[p]=='/') rvbuf[p--]=0; /* strip trailing .git */ if(p>=3 && !strncmp(&rvbuf[p-3],".git",4)) { p -= 3; rvbuf[p--] = 0; } /* strip more trailing slashes if any */ while( p && rvbuf[p]=='/') rvbuf[p--]=0; /* find last slash in the remaining string */ rv = strrchr(rvbuf,'/'); if(rv) return ++rv; return rvbuf; } char *cgit_currurl() { if (!ctx.cfg.virtual_root) return ctx.cfg.script_name; else if (ctx.qry.page) return fmt("%s/%s/%s/", ctx.cfg.virtual_root, ctx.qry.repo, ctx.qry.page); else if (ctx.qry.repo) return fmt("%s/%s/", ctx.cfg.virtual_root, ctx.qry.repo); else return fmt("%s/", ctx.cfg.virtual_root); } static char *repolink(char *title, char *class, char *page, char *head, char *path) { char *delim = "?"; html("<a"); if (title) { html(" title='"); html_attr(title); html("'"); } if (class) { html(" class='"); html_attr(class); html("'"); } html(" href='"); if (ctx.cfg.virtual_root) { html_attr(ctx.cfg.virtual_root); if (ctx.cfg.virtual_root[strlen(ctx.cfg.virtual_root) - 1] != '/') html("/"); - html_attr(cgit_repo->url); - if (cgit_repo->url[strlen(cgit_repo->url) - 1] != '/') + html_attr(ctx.repo->url); + if (ctx.repo->url[strlen(ctx.repo->url) - 1] != '/') html("/"); if (page) { html(page); html("/"); if (path) html_attr(path); } } else { html(ctx.cfg.script_name); html("?url="); - html_attr(cgit_repo->url); - if (cgit_repo->url[strlen(cgit_repo->url) - 1] != '/') + html_attr(ctx.repo->url); + if (ctx.repo->url[strlen(ctx.repo->url) - 1] != '/') html("/"); if (page) { html(page); html("/"); if (path) html_attr(path); } delim = "&"; } - if (head && strcmp(head, cgit_repo->defbranch)) { + if (head && strcmp(head, ctx.repo->defbranch)) { html(delim); html("h="); html_attr(head); delim = "&"; } return fmt("%s", delim); } static void reporevlink(char *page, char *name, char *title, char *class, char *head, char *rev, char *path) { char *delim; delim = repolink(title, class, page, head, path); if (rev && strcmp(rev, ctx.qry.head)) { html(delim); html("id="); html_attr(rev); } html("'>"); html_txt(name); html("</a>"); } void cgit_tree_link(char *name, char *title, char *class, char *head, char *rev, char *path) { reporevlink("tree", name, title, class, head, rev, path); } void cgit_log_link(char *name, char *title, char *class, char *head, char *rev, char *path, int ofs, char *grep, char *pattern) { char *delim; delim = repolink(title, class, "log", head, path); if (rev && strcmp(rev, ctx.qry.head)) { html(delim); html("id="); html_attr(rev); delim = "&"; } if (grep && pattern) { html(delim); html("qt="); html_attr(grep); delim = "&"; html(delim); @@ -401,158 +401,158 @@ int print_archive_ref(const char *refname, const unsigned char *sha1, { struct tag *tag; struct taginfo *info; struct object *obj; char buf[256], *url; unsigned char fileid[20]; int *header = (int *)cb_data; if (prefixcmp(refname, "refs/archives")) return 0; strncpy(buf, refname+14, sizeof(buf)); obj = parse_object(sha1); if (!obj) return 1; if (obj->type == OBJ_TAG) { tag = lookup_tag(sha1); if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) return 0; hashcpy(fileid, tag->tagged->sha1); } else if (obj->type != OBJ_BLOB) { return 0; } else { hashcpy(fileid, sha1); } if (!*header) { html("<h1>download</h1>\n"); *header = 1; } url = cgit_pageurl(ctx.qry.repo, "blob", fmt("id=%s&path=%s", sha1_to_hex(fileid), buf)); html_link_open(url, NULL, "menu"); html_txt(strlpart(buf, 20)); html_link_close(); return 0; } void add_hidden_formfields(int incl_head, int incl_search, char *page) { char *url; if (!ctx.cfg.virtual_root) { url = fmt("%s/%s", ctx.qry.repo, page); if (ctx.qry.path) url = fmt("%s/%s", url, ctx.qry.path); html_hidden("url", url); } - if (incl_head && strcmp(ctx.qry.head, cgit_repo->defbranch)) + if (incl_head && strcmp(ctx.qry.head, ctx.repo->defbranch)) html_hidden("h", ctx.qry.head); if (ctx.qry.sha1) html_hidden("id", ctx.qry.sha1); if (ctx.qry.sha2) html_hidden("id2", ctx.qry.sha2); if (incl_search) { if (ctx.qry.grep) html_hidden("qt", ctx.qry.grep); if (ctx.qry.search) html_hidden("q", ctx.qry.search); } } void cgit_print_pageheader(char *title, int show_search) { 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.qry.repo) { html("<h1 class='first'>"); - html_txt(strrpart(cgit_repo->name, 20)); + html_txt(strrpart(ctx.repo->name, 20)); html("</h1>\n"); - html_txt(cgit_repo->desc); - if (cgit_repo->owner) { + html_txt(ctx.repo->desc); + if (ctx.repo->owner) { html("<h1>owner</h1>\n"); - html_txt(cgit_repo->owner); + 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); for_each_ref(print_archive_ref, &header); - if (cgit_repo->clone_url || ctx.cfg.clone_prefix) { + if (ctx.repo->clone_url || ctx.cfg.clone_prefix) { html("<h1>clone</h1>\n"); - if (cgit_repo->clone_url) - url = cgit_repo->clone_url; + if (ctx.repo->clone_url) + url = ctx.repo->clone_url; else url = fmt("%s%s", ctx.cfg.clone_prefix, - cgit_repo->url); + 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("<h1>branch</h1>\n"); 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("<h1>search</h1>\n"); html("<form method='get' action='"); if (ctx.cfg.virtual_root) html_attr(cgit_fileurl(ctx.qry.repo, "log", ctx.qry.path, NULL)); html("'>\n"); add_hidden_formfields(1, 0, "log"); html("<select name='qt'>\n"); html_option("grep", "log msg", ctx.qry.grep); 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_attr(ctx.qry.search); html("'/>\n"); html("</form>\n"); } else { if (!ctx.cfg.index_info || html_include(ctx.cfg.index_info)) html(default_info); } html("</td></tr></table></td>\n"); html("<td id='content'>\n"); } |