Commit Graph

106 Commits

Author SHA1 Message Date
Lars Hjemli
0cbb50841a Add support for an 'embedded' option in cgitrc
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>
2009-02-02 08:11:29 +01:00
Lars Hjemli
b115955d71 Add support for a custom header
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-01-29 21:27:39 +01:00
Lars Hjemli
7710178e45 Merge branch 'lh/stats'
Conflicts:
	cgit.c
	cgit.css
	cgit.h
	ui-tree.c

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-01-27 20:16:37 +01:00
Lars Hjemli
31665579c2 Merge branch 'stable' 2009-01-11 22:00:25 +01:00
Lars Hjemli
eb14609dc4 Avoid SEGFAULT on invalid requests
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>
2009-01-11 21:23:04 +01:00
Lars Hjemli
c3c925f4ec ui-shared: externalize add_hidden_formfields()
This function will be reused by ui-stats.c in the next commit.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-12-07 15:52:35 +01:00
Lars Hjemli
eaf2d25c16 ui-shared: add and use cgit_stats_link()
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-12-07 13:34:16 +01:00
Lars Hjemli
fb2f3f6c29 ui-stats: replace 'enable-stats' setting with 'max-stats'
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>
2008-12-07 13:17:21 +01:00
Lars Hjemli
f86a23ff53 Add a 'stats' page to each repo
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>
2008-12-06 17:38:19 +01:00
Lars Hjemli
3c32fe0771 Merge branch 'full-log'
Conflicts:
	cgit.c
	cgit.h
2008-12-06 11:37:37 +01:00
Lars Hjemli
c57aceb1d2 ui-shared: shorten the sha1 printed by cgit_object_link
Such links was printed as the object type followed by the objects complete
sha1. We still use the complete sha1 in the link but we no longer show it
in all its glory; only the first 10 hex chars are printed.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-12-01 22:01:26 +01:00
Lars Hjemli
b9053a4ff0 ui-shared: exploit snapshot dwimmery in cgit_print_snapshot_links
Since we know that ui-snapshot.c is able to extract the revision from the
filename, there's no longer necessary to specify the revision with a 'id'
querystring argument.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-12-01 21:50:19 +01:00
Lars Hjemli
0274b57d55 ui-log: add support for showing the full commit message
Some users prefer to see the full message, so to make these users happy
the new querystring parameter "showmsg" can be used to print the full
commit message per log entry.

A link is provided in the log heading to make this function accessible,
and all links and forms tries to preserve the users preference.

Note: the new link is not displayed on the summary page since the point
of the summary page is to be a summary, but it is still obeyed if specified
manually.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-11-29 18:39:41 +01:00
Lars Hjemli
cb1cc0d82d ui-shared: specify correct css class for summary tab
When introducing cgit_summary_link() in 49ecbbdd I forgot to specify the
css class. This fixes it.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-06 16:00:42 +02:00
Lars Hjemli
cf61ad411c ui-shared: add cgit_tag_link()
This function can be used to generate properly escaped links to the tag
page.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05 21:18:45 +02:00
Lars Hjemli
8b5fc6de03 ui-shared: generate proper links in cgit_object_link()
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05 21:12:08 +02:00
Lars Hjemli
2e884f3162 ui-shared: use html_url_path() to get properly escaped url in form action
When a repo uses an url with e.g. '#' or '?' characters this needs to be
properly escaped when used as action in a form tag.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05 19:25:47 +02:00
Lars Hjemli
b9aabf0b8f ui-shared: reword the standard page footer
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05 19:09:58 +02:00
Lars Hjemli
23ffba78b4 ui-shared: do not print repo name on the "summary" tab
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05 19:00:32 +02:00
Lars Hjemli
49ecbbddf0 ui-repolist + ui-shared: Use cgit_summary_link()
This makes is possible to use cgit with repository urls containing special
url characters like '#' and '?'.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05 17:16:36 +02:00
Lars Hjemli
e9d3bd544f ui-shared.c: add cgit_summary_link()
This function can be used to generate a link to the summary page for the
currently active repo.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05 16:55:50 +02:00
Lars Hjemli
44b208aa44 ui-shared.c: use html_url_path() in repolink()
This makes sure that reponames and paths are properly escaped when used
as urls.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05 16:54:44 +02:00
Lars Hjemli
b575115d9d ui-shared.c: use html_url_arg()
The link-generating functions are updated to use the new html_url_arg
function, thereby fixing links to strange repos, branches and files.

Also, the test-suite is updated to verify some cases of strange urls.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05 12:52:25 +02:00
Eric Wong
9c931b1e6e use Host: header to generate cgit_hosturl
I run an instance of lighttpd for cgit behind nginx (nginx
doesn't execute CGI).  So the port (SERVER_PORT=33333) that
lighttpd runs on sends to cgit is different from the standard
port 80 that public clients connect to (via nginx).

This was causing the Atom feed URL to show the private port
number that lighttpd was running on.

Since the HTTP/1.1 "Host" header includes the port number if
running on a non-standard port, it allows non-client-facing HTTP
servers to transparently generate public URLs that clients can
see.

So use the "Host" header if it is available and fall back to
SERVER_NAME/SERVER_PORT for some clients that don't set
HTTP_HOST.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
2008-09-02 01:26:37 +02:00
Lars Hjemli
d532c4d161 Merge branch 'lh/plain'
* lh/plain:
  Supply status description to html_status()
  ui-tree: link to plain view instead of blob view
  Implement plain view
2008-09-01 22:40:55 +02:00
Lars Hjemli
65b7b876aa ui-tree: link to plain view instead of blob view
The urls for plain view makes it possible to download blobs without knowing
their SHA1, but the function needs to be promoted and the link from tree
view seems like a perfect fit.

PS: Although hidden, the blob view still is nice for direct blob access so
there's no point in removing it.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-06 11:21:30 +02:00
Lars Hjemli
e5da4bca54 Implement plain view
This implements a way to access plain blobs by path (similar to the
tree view) instead of by sha1.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-06 11:21:30 +02:00
Lars Hjemli
b2a3d31e88 Add atom-support
This enables a page which generates atom feeds for the current branch and
path, heavily inspired by the atom-support in gitweb.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-01 22:12:34 +02:00
Stefan Naewe
0f0ab148c6 Added local-time option to cgitrc
When `local-time` is set, commit, tag and patch timestamps will be printed
in the servers timezone. Also, regardless of the value of `local-time`,
these timestamps will now always show the timezone.

Signed-off-by: Stefan Naewe <stefan.naewe@atlas-elektronik.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-08-01 22:09:13 +02:00
Lars Hjemli
25c84326de Be prepared for empty repositories
Before this patch, cgit would segfault on repositories with no refs.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-07-27 12:32:08 +02:00
Lars Hjemli
2d6ee032d0 ui-shared: show repo owner along with description
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-07-27 12:22:16 +02:00
Lars Hjemli
502865a5ec Add a favicon option to cgitrc
This option is used to specify a shortcut icon on all cgit pages.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-07-19 20:47:39 +02:00
Lars Hjemli
de5e928171 Add support for including a footer on all pages
The new cgitrc option `footer` can be used to include a html-file which
replaces the standard 'generated by cgit' message at the bottom of each
page.

Suggested-by: Peter Danenberg <pcd@wikitex.org>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-06-26 13:53:30 +02:00
Lars Hjemli
17890d0058 Add link to index page from repo header, remove page name
This makes it more obvious how to get back to the index, especially when the
config option `logo-link` is used. And the page name displayed in the header
provided no extra information. It only consumed space and deserved to die.

While at it, make sure that the different parts of the header doesn't wrap
when horizontal space is limited.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-04 17:30:02 +02:00
Lars Hjemli
aa3c4486b4 Add footer with page creation time and cgit version on all pages
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-03 11:07:41 +02:00
Lars Hjemli
141f1c3eb6 Add cgit_index_link() function with support for offset
This function will be used to build a pager in ui-repolist.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-03 10:37:02 +02:00
Lars Hjemli
71adba1f16 Add 'about site' and 'about repo' pages
This commit uses the options and changes from the last few commits to
implement a new 'about' command which works both with and without a
repo.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29 01:09:41 +02:00
Lars Hjemli
4c9916043d Re-enable 'index-info' and add support for 'root-desc' in cgitrc
The 'index-info' option got lost when the layout was converted from
sidebar to old-fashioned header (noticed by Harley Laue, thanks!), and
this commit re-enables it.

But there is now also an alternative in the 'root-desc' option; where
'index-info' specifies a file to include, 'root-desc' specifies the text
literally. This might be nicer for the one-liner descriptions which these
options typically provides.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29 00:55:34 +02:00
Lars Hjemli
3cfcb086ab Cleanup page header
Fix some invalid html, remove dead code.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-15 00:00:11 +02:00
Lars Hjemli
39912a24ed Remove 'patch' link from tab, add to commit view
It's a bit confusing to enter the patch view from the tab, since it has no
layout. And the commit view has always lacked showing the commit id. Both of
these warts are fixed by this commit, which adds a new header line in the
commit view which shows the commit id as a 'permalink' to the current commit
and also adds a link to the patch view of the current commit.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13 12:20:00 +02:00
Lars Hjemli
536b0541fc Implement minimal freetext search in the repolist
This makes the repolist much more usable when there's a lot of repositories
registered in cgitrc.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13 12:10:03 +02:00
Lars Hjemli
931fc6d1e4 More layout fixes
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13 10:57:11 +02:00
Lars Hjemli
68cb84839f Reintroduce the branch switcher
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-12 20:11:49 +02:00
Lars Hjemli
7c0d2d9fbd Add fixed link to index page from repo header
This makes it easier to get back to the index page, and also re-enables
the usage of logo-link in cgitrc.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-12 20:01:41 +02:00
Lars Hjemli
f135569b2b Replace sidebar/logo
This replaces the sidebar with a more 'common' header layout and also
updates the logo.

Not quite finished yet, though.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-12 20:00:27 +02:00
Lars Hjemli
f34478cbe0 Refactor snapshot support
The snapshot support needs to be split between output- and config-related
functions to get the layering between shared.c and ui-*.c right. There
is also some codestyle-issues which needs fixing to make the snapshot
functions more similar to the rest of the cgit code.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-24 16:00:27 +01:00
Lars Hjemli
f3c1a187fe Add struct cgit_page to cgit_context
This struct is used when generating http headers, and as such is another
small step towards the goal of the whole cleanup series; to invoke each
page/view function with a function pointer.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-24 00:51:19 +01:00
Lars Hjemli
b1f9b9c145 Introduce html.h
All html-functions can be quite easily separated from the rest of cgit, so
lets do it; the only issue was html_filemode which uses some git-defined
macros so the function is moved into ui-shared.c::cgit_print_filemode().

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-18 08:13:10 +01:00
Lars Hjemli
b88fb016d0 Improve initialization of git directory
Using the functions offered by libgit feels like the right thing to do. Also,
make sure that config errors gets properly reported.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-02-16 21:48:19 +01:00
Lars Hjemli
d1f3bbe9d2 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>
2008-02-16 13:56:09 +01:00