view website/www/_templates/layout.html @ 8478:ed4ef394d5d6

doc: initial attempt to document setup of pgp support for email. Used an AI assistant to help write this. Basic gpg commands seem to work, but I have not tested this totally. Docs basically follow the setup used for pgp testing in the test suite. It looks like roundup accepts signed emails as well as encrypted and signed emails. But it does not generate signed emails. Also it looks like there is no PGP support for alternate email addresses. Only primary addresses can do PGP emails.
author John Rouillard <rouilj@ieee.org>
date Sat, 15 Nov 2025 16:59:24 -0500
parents e775cd258763
children 4b89c22b1a91
line wrap: on
line source

{% set script_files = ['_static/jquery.js', '_static/doctools.js',
                       '_static/language_data.js',
                       '_static/searchtools.js',
                       '_static/sphinx_highlight.js',
                       '_static/tabs.js',
] %}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    {%- if builder != 'htmlhelp' %}
      {%- set titlesuffix = docstitle|e %}
      {%- set titlesuffix = " - " + titlesuffix %}
    {%- endif %}
    <title>{{ title|striptags }}{{ titlesuffix }}</title>

    {%- if builder != 'htmlhelp' %}
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
          URL_ROOT:    '{{ pathto("", 1) }}',
          VERSION:     '{{ release|e }}',
          COLLAPSE_MODINDEX: false,
          FILE_SUFFIX: '{{ file_suffix }}'
      };
    </script>
    {%- if pagename == 'search' %}
    {%- for scriptfile in script_files %}
    <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
    {%- endfor %}
    <script type="text/javascript">$('#searchbox').show(0);</script>
    {%- endif %}

    {%- if builder == 'web' %}
    <link rel="stylesheet" href="{{ pathto('index') }}?do=stylesheet{%
      if in_admin_panel %}&admin=yes{% endif %}" type="text/css" />
    {%- for link, type, title in page_links %}
    <link rel="alternate" type="{{ type|e(true) }}" title="{{ title|e(true) }}" href="{{ link|e(true) }}" />
    {%- endfor %}
    {%- else %}
    <link rel="stylesheet" href="{{ pathto('_static/style.css', 1) }}" type="text/css" />
    {%- endif %}
    <!-- https://github.com/sphinx-doc/sphinx/issues/11699 means a
         duplicate viewport tag -->
    {{ metatags }}
    {%- if 'name="description"' not in metatags %}
      <meta name="description"
        content="Page {{ pagename }} in documentation on the Roundup issue tracker, version {{ release|e }}.">
    {%- endif %}
    {%- if pageurl %}
      {%- if pageurl.endswith("org/index.html") %}
      <!-- strip the index.html to make
           https://www.roundup-tracker.org/ canonical -->
    <link rel="canonical" href="{{ pageurl[:-10] }}" />
      {%- else %}
    <link rel="canonical" href="{{ pageurl|e }}" />
      {%- endif %}
    {%- endif %}
    {%- if use_opensearch %}
    <link rel="search" type="application/opensearchdescription+xml"
          title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
          href="{{ pathto('_static/opensearch.xml', 1) }}"/>
    {%- endif %}
    {%- if favicon %}
    <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
    {%- endif %}
    {%- endif %}
{%- block linktags %}
    {%- if hasdoc('about') %}
    <link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" />
    {%- endif %}
    <link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" />
    <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" />
    {%- if hasdoc('copyright') %}
    <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" />
    {%- endif %}
    <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" />
    {%- if parents %}
    <link rel="up" title="{{ parents[-1].title|striptags }}" href="{{ parents[-1].link|e }}" />
    {%- endif %}
    {%- if next %}
    <link rel="next" title="{{ next.title|striptags }}" href="{{ next.link|e }}" />
    {%- endif %}
    {%- if prev %}
    <link rel="prev" title="{{ prev.title|striptags }}" href="{{ prev.link|e }}" />
    {%- endif %}
{%- endblock %}
  </head>
  <body>
    <div id="skiplink"><a href="#main">Skip to main content</a></div>
    <header class="header">
      <div class="label non_mobile">Roundup</div>
      <div class="label mobile"><a href="#main">Roundup
	  <span class="jumplabel">jump to {{ title|e }}</span></a></div>
      {%- if pagename != "search" %}
        <div id="searchbox" style="display: none">
          <form class="search" action="{{ pathto('search') }}" method="get">
            <input type="text" aria-label="Enter search terms"
		   name="q" size="18" autocomplete="on" />
            <input type="submit" value="{{ _('Search') }}" />
            <input type="hidden" name="check_keywords" value="yes" />
            <input type="hidden" name="area" value="default" />
          </form>
        </div>
      {%- endif %}
    </header>
    <div class="navigation">
      <nav aria-label="primary navigation">
      <div class="menu">
       {{ toctree() }}
      </div>
      </nav>
    </div>
    <div class="content">
	<nav id="subnav" aria-label="sub navigation">
        {%- if prev %}
           <a title="{{ prev.title|striptags }}" href="{{ prev.link|e }}">
	     Prev</a>
        {%- endif %}
	{%- if next %}
           <a title="{{ next.title|striptags }}" href="{{ next.link|e }}">
	     Next</a>
	{%- endif %}
        <a title="{{ _('Index') }}" href="{{ pathto('genindex') }}">
	  Index</a>
	</nav>
	<main id="main" role="main" tabindex="-1">
       {% block body %} {% endblock %}
	</main>
    </div>
{%- block footer %}
    <footer class="footer">
      <div>
      {%- if show_source and has_source and sourcename %}
        <span class="source">[<a href="{{ pathto('_sources/' + sourcename, true)|e }}" rel="nofollow">{{ _('page source') }}</a>]</span>
      {%- endif %}
      {%- if hasdoc('copyright') %}
        {% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
      {%- else %}
        {% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
      {%- endif %}
      </div>
      <div>
      {%- if last_updated %}
        {% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
      {%- endif %}
      <span>Hosted by <a href="https://sourceforge.net"><img src="https://sflogo.sourceforge.net/sflogo.php?group_id=31577&amp;type=1" width="88" height="31" alt="SourceForge.net Logo" /></a></span>
      </div>
    </footer>
{%- endblock %}
    <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
    {%- for cssfile in css_files %}
    <!-- loading css_files -->
    <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
    {%- endfor %}
    <script>
      /* locally hosted goatcounter https://www.goatcounter.com/ */
      /* include site info in path url to allow multiple sites to be
      tracked together */
      window.goatcounter = {
      path: function(p) { return location.host + p }
      }
    </script>
    <script data-goatcounter="https://stats.rouilj.dynamic-dns.net/count"
	    integrity="sha384-QGgNMMRFTi8ul5kHJ+vXysPe8gySvSA/Y3rpXZiRLzKPIw8CWY+a3ObKmQsyDr+a"
            async="" src="{{ pathto('_static/goatcounter_count.v3.js', 1) }}">
    </script>
    <script id="documentation_options" data-url_root="{{ url_root }}"
	    src="{{ pathto('_static/documentation_options.js', 1) }}">
    </script>
    {%- if pagename != 'search' %}
    {%- for scriptfile in script_files %}
    <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
    {%- endfor %}
    <script type="text/javascript">$('#searchbox').show(0);</script>
    {%- endif %}
    {%- block extrahead %} {% endblock %}

  </body>
</html>

Roundup Issue Tracker: http://roundup-tracker.org/