]> gitweb.ps.run Git - ps-cgit/commitdiff
filter: add page source to email filter
authorJason A. Donenfeld <Jason@zx2c4.com>
Mon, 13 Jan 2014 15:24:40 +0000 (16:24 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Tue, 14 Jan 2014 01:00:07 +0000 (02:00 +0100)
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>
cgitrc.5.txt
filter.c
filters/email-gravatar.lua
filters/email-gravatar.py
ui-commit.c
ui-log.c
ui-refs.c
ui-tag.c

index b7dc5a4ca665e092a7f5f03a9f749fccd02984b1..6a926aa922fe3d556b3933ebc6d663a8ecac7bff 100644 (file)
@@ -121,9 +121,9 @@ email-filter::
        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
@@ -620,10 +620,11 @@ commit filter::
        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
index 08ce7a5a021a598bc304f42d3760ac9eda0bfefa..aa36026a0434d500e5fe33f4e37671833b819e1b 100644 (file)
--- a/filter.c
+++ b/filter.c
@@ -406,6 +406,9 @@ struct cgit_filter *cgit_new_filter(const char *cmd, filter_type filtertype)
 
        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;
index 8a5344794ac7a8575b44e1b1d65c8e996f887858..982e03098c9e25421f6366564a7099c4d6f2bcef 100644 (file)
@@ -9,7 +9,7 @@
 
 require("crypto")
 
 
 require("crypto")
 
-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
index 44456155fedd7801d5ae85bb1ae282350fcd4e31..f90b87de3183ddb05ed6767c828de59cef03bd0a 100755 (executable)
@@ -27,6 +27,8 @@ if email[0] == '<':
 if email[-1] == '>':
         email = email[0:-1]
 
 if email[-1] == '>':
         email = email[0:-1]
 
+page = sys.argv[2]
+
 md5 = hashlib.md5(email.encode()).hexdigest()
 text = sys.stdin.read().strip()
 
 md5 = hashlib.md5(email.encode()).hexdigest()
 text = sys.stdin.read().strip()
 
index bd14ef04c7772da30f5f67457da9f457dd3f1c83..c48bfe88fb7966c763e36a37d2a654a776e517d3 100644 (file)
@@ -44,7 +44,7 @@ void cgit_print_commit(char *hex, const char *prefix)
        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(" ");
@@ -55,7 +55,7 @@ void cgit_print_commit(char *hex, const char *prefix)
        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(" ");
index 957d887f0c7b5c17fd1b67697baf29ccd6ffc7ca..499534c1a8b359833576392e582aba0d4171986e 100644 (file)
--- a/ui-log.c
+++ b/ui-log.c
@@ -168,7 +168,7 @@ static void print_commit(struct commit *commit, struct rev_info *revs)
                         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);
 
index d125459f81264230a6a4422a22321b3375aff518..147b66563382fb8c7140a1243f423610afa25281 100644 (file)
--- a/ui-refs.c
+++ b/ui-refs.c
@@ -77,7 +77,7 @@ static int print_branch(struct refinfo *ref)
        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'>");
@@ -157,12 +157,12 @@ static int print_tag(struct refinfo *ref)
        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);
        }
index adbdb90e3771b566e808b56629bffb78d0334aa3..c1d173836357a017538db1dd7028b265acc04895 100644 (file)
--- a/ui-tag.c
+++ b/ui-tag.c
@@ -77,7 +77,7 @@ void cgit_print_tag(char *revname)
                }
                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(" ");