Added plugin icon to plugin list/detail

This commit is contained in:
Jason Novinger 2025-04-25 13:42:36 -05:00
parent 37cfc50202
commit afc7b35af0
7 changed files with 23 additions and 3 deletions

View File

@ -47,6 +47,7 @@ class Plugin:
The representation of a NetBox plugin in the catalog API.
"""
id: str = ''
icon_url: str = ''
status: str = ''
title_short: str = ''
title_long: str = ''
@ -193,6 +194,7 @@ def get_catalog_plugins():
# Populate plugin data
plugins[data['config_name']] = Plugin(
id=data['id'],
icon_url=data['icon_url'],
status=data['status'],
title_short=data['title_short'],
title_long=data['title_long'],

View File

@ -9,6 +9,12 @@ __all__ = (
)
PLUGIN_NAME_TEMPLATE = """
<img class="plugin-icon" src="{{ record.icon_url }}">
<a href="{% url 'core:plugin' record.config_name %}">{{ record.title_long }}</a>
"""
class PluginVersionTable(BaseTable):
version = tables.Column(
verbose_name=_('Version')
@ -39,8 +45,8 @@ class PluginVersionTable(BaseTable):
class CatalogPluginTable(BaseTable):
title_long = tables.Column(
linkify=('core:plugin', [tables.A('config_name')]),
title_long = columns.TemplateColumn(
template_code=PLUGIN_NAME_TEMPLATE,
verbose_name=_('Name')
)
author = tables.Column(

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -75,3 +75,15 @@ span.color-label {
.btn-grey, .btn-gray {
@extend .btn-secondary;
}
img.plugin-icon {
max-width: 1.4285em;
height: auto;
}
body[data-bs-theme=dark] {
// Assuming icon is black/white line art, invert it and tone down brightness
img.plugin-icon {
filter: invert(100%) brightness(80%);
}
}

View File

@ -4,7 +4,7 @@
{% load i18n %}
{% load render_table from django_tables2 %}
{% block title %}{{ plugin.title_long }}{% endblock %}
{% block title %}<img class="plugin-icon" src="{{ plugin.icon_url }}">&nbsp;{{ plugin.title_long }}{% endblock %}
{% block object_identifier %}
{% endblock object_identifier %}