File: //usr/lib/python3/dist-packages/trac/templates/environment_info.html
{# Copyright (C) 2014-2021 Edgewall Software
This software is licensed as described in the file COPYING, which
you should have received as part of this distribution. The terms
are also available at https://trac.edgewall.org/wiki/TracLicense.
This software consists of voluntary contributions made by many
individuals. For the exact contribution history, see the revision
history and logs, available at https://trac.edgewall.org/.
#}
## Display system information.
{# Arguments:
- system_info: the output of `Environment.system_info`.
- plugins: the output of `get_plugin_info`.
- config: the output of `get_configinfo`.
#}
# if system_info or plugins or config:
<div id="environmentinfo">
<hr />
# if system_info:
<div id="systeminfo">
<script>
jQuery(function ($) {
$("#systeminfo table")
.before("<p>User Agent: <code>" + navigator.userAgent + "</code></p>")
.append("<tr><th>jQuery</th><td>" + $().jquery + "</td></tr>" +
"<tr><th>jQuery UI</th><td>" + $.ui.version + "</td></tr>" +
"<tr><th>jQuery Timepicker</th><td>" + $.timepicker.version +
"</td></tr>");
});
</script>
<h2>${_("System Information")}</h2>
<table class="listing">
<thead><tr><th>${_("Package")}</th><th>${_("Version")}</th></tr></thead>
<tbody>
# for name, value in system_info:
<tr>
<th>${name}</th>
<td>${value}</td>
</tr>
# endfor
</tbody>
</table>
</div>
# endif
# if plugins:
<div id="plugins">
<h2>${_("Installed Plugins")}</h2>
<table class="listing">
<thead><tr>
<th>${_("Name")}</th>
<th>${_("Version")}</th>
<th>${_("Location")}</th>
</tr></thead>
<tbody>
# for plugin in plugins:
# set components = plugin.modules|map(attribute='components')|flatten
<tr ${{'class': 'disabled' if not components|selectattr('enabled')}
|htmlattr}>
# set url = (plugin.info.home_page or
plugin.info.author_email and
'mailto:' + plugin.info.author_email)
<th>
# if url:
<a href="${url}">${plugin.name}</a>
# else:
${plugin.name}
# endif
</th>
<td>${plugin.version or _('N/A')}</td>
<td class="file">
# if 'frame_idx' in plugin:
<a href="#frame${plugin.frame_idx}">${plugin.path}</a>
# else:
${plugin.path}
# endif
</td>
</tr>
# endfor
</tbody>
</table>
</div>
# endif
# if interface:
<div id="interface">
<h2>${_("Interface Customization")}</h2>
<table class="listing">
<tr>
<th class="section">${_("Site templates")}</th>
<td class="file">${' '.join(interface['site-templates'])}</td>
</tr>
<tr>
<th class="section">${_("Shared templates")}</th>
<td class="file">${' '.join(interface['shared-templates'])}</td>
</tr>
<tr>
<th class="section">${_("Site static resources")}</th>
<td class="file">${' '.join(interface['site-htdocs'])}</td>
</tr>
<tr>
<th class="section">${_("Shared static resources")}</th>
<td class="file">${' '.join(interface['shared-htdocs'])}</td>
</tr>
</table>
</div>
# endif
# if config:
<div id="config">
<h2>${_("Configuration")}</h2>
<table class="listing">
<thead>
<tr>
<th class="section">${_("Section")}</th>
<th class="name">${_("Name")}</th>
<th class="value">${_("Value")}</th>
</tr>
</thead>
<tbody>
# for section in config:
# for option in section.options:
<tr ${{'class': 'modified' if option.modified}|htmlattr}>
# if loop.first:
<th class="section"
rowspan="${len(section.options)}">${section.name}</th>
# endif
<td class="name">${option.name}</td>
<td class="value">${option.value}</td>
</tr>
# endfor
# endfor
</tbody>
</table>
</div>
# endif
</div>
# endif