view website/www/_templates/layout.html @ 7800:2d4684e4702d

fix: enhancement to history command output and % template fix. Rather than using the key field, use the label field for descriptions. Call cls.labelprop(default_to_id=True) so it returns id rather than the first sorted property name. If labelprop() returns 'id' or 'title', we return nothing. 'id' means there is no label set and no properties named 'name' or 'title'. So have the caller do whatever it wants (prepend classname for example) when there is no human readable name. This prevents %(name)s%(key)s from producing: 23(23). Also don't accept the 'title' property. Titles can be too long. Arguably we could: '%(name)20s' to limit the title length. However without ellipses or something truncating the title might be confusing. So again pretend there is no human readable name.
author John Rouillard <rouilj@ieee.org>
date Tue, 12 Mar 2024 11:52:17 -0400
parents bd013590d8d6
children 7ac637506acf
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'] %}
<!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 %}
    <link rel="canonical" href="{{ pageurl|e }}" />
    {%- 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/