Since the email filter is called from lots of places, the script might
benefit from knowing the origin. That way it can modify its contents
and/or size depending.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Specifies a command which will be invoked to format names and email
address of committers, authors, and taggers, as represented in various
places throughout the cgit interface. This command will receive an
Specifies a command which will be invoked to format names and email
address of committers, authors, and taggers, as represented in various
places throughout the cgit interface. This command will receive an
- email address as its only command line argument, and the text to
- format on STDIN. It is to write the formatted text back out onto
- STDOUT. Default value: none. See also: "FILTER API".
+ email address and an origin page string as its command line arguments,
+ and the text to format on STDIN. It is to write the formatted text back
+ out onto STDOUT. Default value: none. See also: "FILTER API".
embedded::
Flag which, when set to "1", will make cgit generate a html fragment
embedded::
Flag which, when set to "1", will make cgit generate a html fragment
expected on standard output.
email filter::
expected on standard output.
email filter::
- This filter is given a single parameter: the email address of the
- relevent user. The filter will then receive the text string to format
- on standard input and is expected to write to standard output the
- formatted text to be included in the page.
+ This filter is given two parameters: the email address of the relevent
+ author and a string indicating the originating page. The filter will
+ then receive the text string to format on standard input and is
+ expected to write to standard output the formatted text to be included
+ in the page.
source filter::
This filter is given a single parameter: the filename of the source
source filter::
This filter is given a single parameter: the filename of the source
switch (filtertype) {
case EMAIL:
switch (filtertype) {
case EMAIL:
+ argument_count = 2;
+ break;
+
case SOURCE:
case ABOUT:
argument_count = 1;
case SOURCE:
case ABOUT:
argument_count = 1;
-function filter_open(email)
+function filter_open(email, page)
buffer = ""
md5 = crypto.digest("md5", email:sub(2, -2):lower())
end
buffer = ""
md5 = crypto.digest("md5", email:sub(2, -2):lower())
end
if email[-1] == '>':
email = email[0:-1]
if email[-1] == '>':
email = email[0:-1]
md5 = hashlib.md5(email.encode()).hexdigest()
text = sys.stdin.read().strip()
md5 = hashlib.md5(email.encode()).hexdigest()
text = sys.stdin.read().strip()
cgit_print_diff_ctrls();
html("<table summary='commit info' class='commit-info'>\n");
html("<tr><th>author</th><td>");
cgit_print_diff_ctrls();
html("<table summary='commit info' class='commit-info'>\n");
html("<tr><th>author</th><td>");
- cgit_open_filter(ctx.repo->email_filter, info->author_email);
+ cgit_open_filter(ctx.repo->email_filter, info->author_email, "commit");
html_txt(info->author);
if (!ctx.cfg.noplainemail) {
html(" ");
html_txt(info->author);
if (!ctx.cfg.noplainemail) {
html(" ");
cgit_print_date(info->author_date, FMT_LONGDATE, ctx.cfg.local_time);
html("</td></tr>\n");
html("<tr><th>committer</th><td>");
cgit_print_date(info->author_date, FMT_LONGDATE, ctx.cfg.local_time);
html("</td></tr>\n");
html("<tr><th>committer</th><td>");
- cgit_open_filter(ctx.repo->email_filter, info->committer_email);
+ cgit_open_filter(ctx.repo->email_filter, info->committer_email, "commit");
html_txt(info->committer);
if (!ctx.cfg.noplainemail) {
html(" ");
html_txt(info->committer);
if (!ctx.cfg.noplainemail) {
html(" ");
sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0);
show_commit_decorations(commit);
html("</td><td>");
sha1_to_hex(commit->object.sha1), ctx.qry.vpath, 0);
show_commit_decorations(commit);
html("</td><td>");
- cgit_open_filter(ctx.repo->email_filter, info->author_email);
+ cgit_open_filter(ctx.repo->email_filter, info->author_email, "log");
html_txt(info->author);
cgit_close_filter(ctx.repo->email_filter);
html_txt(info->author);
cgit_close_filter(ctx.repo->email_filter);
if (ref->object->type == OBJ_COMMIT) {
cgit_commit_link(info->subject, NULL, NULL, name, NULL, NULL, 0);
html("</td><td>");
if (ref->object->type == OBJ_COMMIT) {
cgit_commit_link(info->subject, NULL, NULL, name, NULL, NULL, 0);
html("</td><td>");
- cgit_open_filter(ctx.repo->email_filter, info->author_email);
+ cgit_open_filter(ctx.repo->email_filter, info->author_email, "refs");
html_txt(info->author);
cgit_close_filter(ctx.repo->email_filter);
html("</td><td colspan='2'>");
html_txt(info->author);
cgit_close_filter(ctx.repo->email_filter);
html("</td><td colspan='2'>");
html("</td><td>");
if (info) {
if (info->tagger) {
html("</td><td>");
if (info) {
if (info->tagger) {
- cgit_open_filter(ctx.repo->email_filter, info->tagger_email);
+ cgit_open_filter(ctx.repo->email_filter, info->tagger_email, "refs");
html_txt(info->tagger);
cgit_close_filter(ctx.repo->email_filter);
}
} else if (ref->object->type == OBJ_COMMIT) {
html_txt(info->tagger);
cgit_close_filter(ctx.repo->email_filter);
}
} else if (ref->object->type == OBJ_COMMIT) {
- cgit_open_filter(ctx.repo->email_filter, ref->commit->author_email);
+ cgit_open_filter(ctx.repo->email_filter, ref->commit->author_email, "refs");
html_txt(ref->commit->author);
cgit_close_filter(ctx.repo->email_filter);
}
html_txt(ref->commit->author);
cgit_close_filter(ctx.repo->email_filter);
}
}
if (info->tagger) {
html("<tr><td>tagged by</td><td>");
}
if (info->tagger) {
html("<tr><td>tagged by</td><td>");
- cgit_open_filter(ctx.repo->email_filter, info->tagger_email);
+ cgit_open_filter(ctx.repo->email_filter, info->tagger_email, "tag");
html_txt(info->tagger);
if (info->tagger_email && !ctx.cfg.noplainemail) {
html(" ");
html_txt(info->tagger);
if (info->tagger_email && !ctx.cfg.noplainemail) {
html(" ");