aboutsummaryrefslogtreecommitdiffstats
path: root/ui-shared.c
Commit message (Collapse)AuthorAgeLines
* Fix segmentation fault in empty repositoryGravatar John Keeping2012-01-04-1/+1
| | | | | | | | | | | When a repository is empty, the ATOM feed link is written in the header, but this involves formatting ctx->qry.head which is NULL in this case. With glibc, vsnprintf formats "%s" with a NULL input as "(null)" but on Solaris this results in a segmentation fault. Since we don't have a meaningful head for the atom feed in an empty repository, it's simplest not to write out the link element at all. Signed-off-by: John Keeping <john@metanate.com>
* Add sort parameter to pager of repo listGravatar Tobias Grimm2012-01-04-9/+15
| | | | | | When the repolist is paged, the page-links are missing the sort parameter, causing the initial page to be custom sorted, but any clicked page will then be with the default sort order again.
* Merge branch 'stable'Gravatar Lars Hjemli2011-03-05-1/+1
|\
| * ui-shared: silence warningGravatar Bernhard Reutner-Fischer2011-02-19-1/+1
| | | | | | | | | | | | | | | | warning: format ‘%ld’ expects type ‘long int’, but argument 2 has type ‘size_t’ Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | implement repo.logo and repo.logo-linkGravatar Bernhard Reutner-Fischer2011-02-19-4/+14
| | | | | | | | | | | | | | | | Allow for per repo logo and logo-link; Use global logo and logo-link per default. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'jh/ignorews'Gravatar Lars Hjemli2010-07-18-0/+10
|\ \
| * | ui-diff: Add link to ignore/show whitespace changes in diffsGravatar Johan Herland2010-07-18-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a link to the "Diffstat" line to ignore/show whitespace changes in the generated diff. To support this, cgit_commit_link() and cgit_diff_link() has learned to preserve the ctx.qry.ignorews variable. Signed-off-by: Johan Herland <johan@herland.net>
* | | Merge branch 'lh/range-search'Gravatar Lars Hjemli2010-06-22-0/+1
|\ \ \ | |/ / |/| |
| * | ui-log.c: allow commit range as search expressionGravatar Lars Hjemli2010-06-19-0/+1
| | | | | | | | | | | | | | | Inspired-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-diff: Add links to increase/decrease number of context lines in diffsGravatar Johan Herland2010-06-19-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add two links to the "Diffstat" line to show more/less context lines in the generated diff. To support this, cgit_commit_link() and cgit_diff_link() has learned to preserve the ctx.qry.context variable. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Preserve path limit in "tab bar" linksGravatar Johan Herland2010-06-19-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using the "tab bar" in the pageheader to navigate between pages, any path limit in effect on the current page is forgotten in the link to the target page, even if the target page can interpret and use the path limit constructively. Instead, preserve the current page's path limit in the "tab bar" links to other pages, where the path limit is useful to the target page. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-commit: Preserve path limit in links to commit pageGravatar Johan Herland2010-06-19-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This includes adding a path argument to cgit_commit_link() and updating all its callers. The callers from within the commit page (i.e. the "commit", "unidiff"/"side-by-side diff" and "parent" links) all preserve the path limit of the current commit page. All other callers pass NULL (i.e. no path limit). Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-patch: Apply path limit to generated patchGravatar Johan Herland2010-06-19-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Also indicate in the comment section of the patch that a path limit was applied, too easily see when a generated patch is only partial. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Teach "breadcrumb" navigation to path limit display beneath tab barGravatar Johan Herland2010-06-19-1/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a path limit is in effect, and displayed directly beneath the tab bar, it should offer breadcrumb navigation (like what the 'tree' page does), to allow changing the path limit easily. Implementing this requires a robust way to link back to the current page with a changed ctx->qry.path, but without losing track of the other query arguments. This is solved by adding the new cgit_self_link() function, which is then invoked repeatedly by the new cgit_print_path_crumbs() function while manipulating ctx->qry.path. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Display path limit directly beneath tab bar in relevant pagesGravatar Johan Herland2010-06-19-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | ui-shared: Replace ctx.qry.path with ctx.qry.vpathGravatar Johan Herland2010-06-19-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In all cases where ui-shared uses ctx.qry.path, it is done so in the context of a in-project path, and not in the context in which the 'refs' page or the 'clone'-related functionality uses ctx.qry.path. Make this explicit by using ctx.qry.vpath instead. This path introduces no fundamental difference in functionality except for fixing some minor bugs, for example the Atom feed reference from a "$repo/refs/heads/" page. Note that the usage of ctx.qry.path in the other ui-<page>.c files is ok, since that code presumably is only executed in the context of its own <page>, so the correct interpretation of ctx.qry.path is never in question. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Remove needless cgit_get_cmd() call, and refactor hc() accordinglyGravatar Johan Herland2010-06-19-19/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The call to cgit_get_cmd() and the following fallback handling (to "summary" or "repoindex") in cgit_print_pageheader() is unnecessary, since the same fallback handling was already done when ctx.qry.page was set when cgit_get_cmd() was called from process_request() in cgit.c. As such, hc() can also be rewritten to simply compare the given 'page' string against ctx.qry.page. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | ui-shared: Improve const-ness in APIGravatar Johan Herland2010-06-19-36/+40
|/ / | | | | | | | | | | | | This is needed to prevent const-related warnings in later patches. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'stable'Gravatar Lars Hjemli2010-02-27-2/+2
|\ \ | |/
| * ui-shared.c: fix segfault when repo is emptyGravatar Florian Pritz2010-02-27-2/+2
| | | | | | | | | | | | | | | | | | PATH_INFO="/$REPONAME/commit/?id=1" QUERY_STRING="id=1" ./cgit.cgi triggers segfault when the repository is empty and therefore ctx.qry.head is unset Signed-off-by: Florian Pritz <bluewind@xssn.at> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'ro/ssdiff'Gravatar Lars Hjemli2009-12-09-6/+28
|\ \
| * | Add possibility to switch between unidiff and side-by-side-diff.Gravatar Ragnar Ouchterlony2009-09-17-6/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A new config option side-by-side-diffs added, defaulting to 0, meaning unidiff. Also a query option (ss) is used toggle this. In the commit page you can switch between the two diff formats by clicking on the link on the "commit"-row, to the right of (patch). In the diff page you can switch by using the link at the start of the page. All commit-links and diff-links will remember the choice. Signed-off-by: Ragnar Ouchterlony <ragnar@lysator.liu.se> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | | Merge branch 'stable'Gravatar Lars Hjemli2009-11-07-1/+1
|\ \ \ | | |/ | |/|
| * | Nov is the correct abbreviationGravatar Danijel Tašov2009-11-07-1/+1
| |/
* | ui-shared.c: prettify download links when generated from tag pageGravatar Lars Hjemli2009-10-16-2/+7
|/ | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'stable'Gravatar Lars Hjemli2009-08-18-8/+11
|\
| * ui-shared: don't print header <img/> if there isn't a logo definedGravatar Matthew Metnetsky2009-08-18-8/+11
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | ui-shared: add support for header/footer options when embedded=1Gravatar Lars Hjemli2009-08-11-5/+12
| | | | | | | | | | | | | | | | | | | | | | When embedded=1, cgit used to ignore the header and footer options. But honoring these options when embedded=1 makes it possible to "frame" the html fragment generated by cgit with any kind of static content, i.e. it should become easier to integrate cgit with site-specfic layouts. Original-patch-by: Mark Constable <markc@renta.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | ui-shared: add support for NO_HTTP=1/--nohttpGravatar Lars Hjemli2009-08-10-1/+1
| | | | | | | | | | | | | | | | | | | | | | cgit_print_http_headers() used to do nothing if 'embedded' was specified in cgitrc, but that was wrong - we never want to skip the headers when invoked as a CGI app. Sadly, there's no easy way to detect if we're invoked as a CGI app or if we're invoked by another CGI app, so for the latter case cgit needs to be invoked with either --nohttp on the command line or NO_HTTP=1 in the environment. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Cleanup handling of environment variablesGravatar Lars Hjemli2009-08-10-23/+9
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'lh/embedded'Gravatar Lars Hjemli2009-07-25-6/+22
|\ \ | | | | | | | | | | | | | | | Conflicts: cgitrc.5.txt ui-shared.c
| * | Add support for 'noheader' optionGravatar Lars Hjemli2009-07-25-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | This option can be used to disable the standard cgit page header, which might be useful in combination with the 'embedded' option. Suggested-by: Mark Constable <markc@renta.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | Add support for an 'embedded' option in cgitrcGravatar Lars Hjemli2009-02-02-0/+10
| |/ | | | | | | | | | | | | | | | | | | When activated, cgit will neither generate http headers nor any 'framing' html elements (like <html> and <body>). Also, all page content is now wrapped in a <div id='cgit'> element to make it easier to select the correct cgit classes when embedded/themed. Suggested-by: Matt Sealey <matt@genesi-usa.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'ml/head-include'Gravatar Lars Hjemli2009-07-25-1/+3
|\ \
| * | Add head-include configuration option.Gravatar Mark Lodato2009-06-08-1/+3
| |/ | | | | | | | | | | This patch adds an option to the configuration file, "head-include", which works just like "header" or "footer", except the content is put into the HTML's <head> tag.
* | Merge branch 'plain-etag'Gravatar Lars Hjemli2009-07-25-0/+6
|\ \ | | | | | | | | | | | | Conflicts: ui-shared.c
| * | Add support for HEAD requestsGravatar Lars Hjemli2009-02-20-0/+4
| | | | | | | | | | | | | | | | | | This is a quick 'n dirty hack which makes cgit honor HEAD requests. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | Add support for ETag in 'plain' viewGravatar Lars Hjemli2009-02-20-0/+2
| |/ | | | | | | | | | | | | | | | | | | | | | | When downloading a blob identified by its path, the client might want to know if the blob has been modified since a previous download of the same path. To this end, an ETag containing the blob SHA1 seems to be ideal. Todo: add support for HEAD requests... Suggested-by: Owen Taylor <otaylor@redhat.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'do/https'Gravatar Lars Hjemli2009-07-25-1/+13
|\ \ | | | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * | use cgit_httpscheme() for atom feedGravatar Diego Ongaro2009-06-11-1/+2
| | |
| * | add cgit_httpscheme() -> http:// or https://Gravatar Diego Ongaro2009-06-11-0/+11
| |/
* | Return http statuscode 404 on unknown branchGravatar Lars Hjemli2009-06-08-0/+2
|/ | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add support for a custom headerGravatar Lars Hjemli2009-01-30-0/+2
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'lh/stats'Gravatar Lars Hjemli2009-01-28-3/+12
|\ | | | | | | | | | | | | | | | | | | Conflicts: cgit.c cgit.css cgit.h ui-tree.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-shared: externalize add_hidden_formfields()Gravatar Lars Hjemli2008-12-07-3/+3
| | | | | | | | | | | | This function will be reused by ui-stats.c in the next commit. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-shared: add and use cgit_stats_link()Gravatar Lars Hjemli2008-12-07-2/+8
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-stats: replace 'enable-stats' setting with 'max-stats'Gravatar Lars Hjemli2008-12-07-1/+1
| | | | | | | | | | | | | | | | | | The new 'max-stats' and 'repo.max-stats' settings makes it possible to define the maximum statistics period, both globally and per repo. Hence, it is now feasible to allow statistics on repositories with a high commit frequency, like linux-2.6, by setting repo.max-stats to e.g. 'month'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * Add a 'stats' page to each repoGravatar Lars Hjemli2008-12-07-0/+3
| | | | | | | | | | | | | | | | | | | | | | This new page, which is disabled by default, can be used to print some statistics about the number of commits per period in the repository, where period can be either weeks, months, quarters or years. The function can be activated globally by setting 'enable-stats=1' in cgitrc and disabled for individual repos by setting 'repo.enable-stats=0'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Merge branch 'stable'Gravatar Lars Hjemli2009-01-12-1/+6
|\ \
| * | Avoid SEGFAULT on invalid requestsGravatar Lars Hjemli2009-01-12-1/+6
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an unknown page is requested, either on the querystring or via PATH_INFO, we end up with a null-referencing cgit_cmd. This null- pointer is then used as argument to the hc() function (which decides what tab to render as 'active'), but this function failed to check if a valid cmd was specified and a SEGFAULT would occur. This patch fixes the issue by introducing a 'fallback-cmd' which specifies what tab to render as 'active' when no valid cmd is requested. While at it, we now also keep track of the active repository even if an invalid cmd was requested since we want to show the error message about the invalid request in the correct context. Noticed-by: Robin Redeker <elmex@ta-sa.org> Signed-off-by: Lars Hjemli <hjemli@gmail.com>