]> granicus.if.org Git - cgit/commitdiff
desc: add root-desc-html and repo.desc-html
authorAndy Green <andy@warmcat.com>
Sun, 24 Jun 2018 00:13:05 +0000 (08:13 +0800)
committerAndy Green <andy@warmcat.com>
Fri, 29 Jun 2018 06:30:24 +0000 (14:30 +0800)
These are optional, default-empty raw html strings that
are emitted after the corresponding text-only versions
root-desc and repo.desc when they are used in the header
area.

This provides a flexible way to place buttons or links
in the header region for both the repo index page and
for repos individually.

The existing root-desc and repo.desc keep their original
meaning as a shortish text-only repo description.  The
reason for that is the description is also used in places
like the repo list, where any decoration is not wanted.

Where root-desc and repo.desc are used in the header region, also
emit their html counterparts afterwards if they are defined.

Where root-desc are repo.desc are used outside the header,
eg in the repo list, leave it as it is without adding any
related html.

It's possible to not define the text repo.desc and just define
the repo.desc-html counterpart; only the html part is shown
then.  But results in the repo list page will then vary according
to what's in the html (text size, pictures etc).

Signed-off-by: Andy Green <andy@warmcat.com>
cgit.c
cgit.h
cgitrc.5.txt
ui-shared.c

diff --git a/cgit.c b/cgit.c
index 8b23c8ffb838496827ba363333c815b4f70e4e04..2ae8895813158d8ec9e59005d539f1427f9108b1 100644 (file)
--- a/cgit.c
+++ b/cgit.c
@@ -52,6 +52,8 @@ static void repo_config(struct cgit_repo *repo, const char *name, const char *va
                repo->clone_url = xstrdup(value);
        else if (!strcmp(name, "desc"))
                repo->desc = xstrdup(value);
+       else if (!strcmp(name, "desc-html"))
+               repo->desc_html = xstrdup(value);
        else if (!strcmp(name, "owner"))
                repo->owner = xstrdup(value);
        else if (!strcmp(name, "homepage"))
@@ -142,6 +144,8 @@ static void config_cb(const char *name, const char *value)
                ctx.cfg.root_title = xstrdup(value);
        else if (!strcmp(name, "root-desc"))
                ctx.cfg.root_desc = xstrdup(value);
+       else if (!strcmp(name, "root-desc-html"))
+               ctx.cfg.root_desc_html = xstrdup(value);
        else if (!strcmp(name, "root-readme"))
                ctx.cfg.root_readme = xstrdup(value);
        else if (!strcmp(name, "css"))
diff --git a/cgit.h b/cgit.h
index 582416eb7f3dfc6a45247c3db7efd6c262dbb141..cf91a96482b00dc1ea69d2a5702c6983fe3d0b65 100644 (file)
--- a/cgit.h
+++ b/cgit.h
@@ -81,6 +81,7 @@ struct cgit_repo {
        char *name;
        char *path;
        char *desc;
+       char *desc_html;
        char *owner;
        char *homepage;
        char *defbranch;
@@ -208,6 +209,7 @@ struct cgit_config {
        char *robots;
        char *root_title;
        char *root_desc;
+       char *root_desc_html;
        char *root_readme;
        char *script_name;
        char *section;
index 27370087d2e0764eb9971d361ead744fa0e1f2be..39f50c7119fac03c965317f4573b80e234b5009a 100644 (file)
@@ -383,6 +383,10 @@ root-desc::
        Text printed below the heading on the repository index page. Default
        value: "a fast webinterface for the git dscm".
 
+root-desc-html::
+       Optional additional raw html to show in the header after root-desc.
+       Default value: none.
+
 root-readme::
        The content of the file specified with this option will be included
        verbatim below the "about" link on the repository index page. Default
@@ -508,6 +512,14 @@ repo.defbranch::
 repo.desc::
        The value to show as repository description. Default value: none.
 
+repo.desc-html::
+       Optional additional raw html to show in the header after repo.desc.
+       Default value: none.  It's possible to leave repo.desc undefined,
+       and just define repo.desc-html.  But it would mean the repo name
+       in the cgit repo list page will show the html parts.  Depending on
+       the html, it may be preferable to define repo.desc so the repo list
+       can just use that and leave out the html.
+
 repo.email-filter::
        Override the default email-filter. Default value: none. See also:
        "enable-filter-overrides". See also: "FILTER API".
index e1ff349f8818d2c48953891e77cb0b13bad23b44..f5198602527bcde4886ca23fed7d67d5f4ad3d7c 100644 (file)
@@ -1028,12 +1028,19 @@ static void print_header(void)
 
        html("<tr><td class='sub'>");
        if (ctx.repo) {
-               html_txt(ctx.repo->desc);
+               if (ctx.repo->desc &&
+                   (ctx.repo->desc != cgit_default_repo_desc ||
+                    !ctx.repo->desc_html))
+                       html_txt(ctx.repo->desc);
+               if (ctx.repo->desc_html)
+                       html(ctx.repo->desc_html);
                html("</td><td class='sub right'>");
                html_txt(ctx.repo->owner);
        } else {
                if (ctx.cfg.root_desc)
                        html_txt(ctx.cfg.root_desc);
+               if (ctx.cfg.root_desc_html)
+                       html(ctx.cfg.root_desc_html);
        }
        html("</td></tr></table>\n");
 }