浏览代码

Merge pull request #20280 from pheus/20264-fix-plugin-icon-display-in-plugin-table

Fixes #20264: Update plugin title rendering with default icon
bctiemann 5 月之前
父节点
当前提交
83fe973fea
共有 3 个文件被更改,包括 13 次插入16 次删除
  1. 2 16
      netbox/core/tables/plugins.py
  2. 10 0
      netbox/core/tables/template_code.py
  3. 1 0
      netbox/project-static/img/plugin-default.svg

+ 2 - 16
netbox/core/tables/plugins.py

@@ -1,10 +1,8 @@
 import django_tables2 as tables
-from django.urls import reverse
-from django.utils.safestring import mark_safe
 from django.utils.translation import gettext_lazy as _
 
 from netbox.tables import BaseTable, columns
-from .template_code import PLUGIN_IS_INSTALLED
+from .template_code import PLUGIN_IS_INSTALLED, PLUGIN_NAME_TEMPLATE
 
 __all__ = (
     'CatalogPluginTable',
@@ -12,12 +10,6 @@ __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')
@@ -94,10 +86,4 @@ class CatalogPluginTable(BaseTable):
         )
         # List installed plugins first, then certified plugins, then
         # everything else (with each tranche ordered alphabetically)
-        order_by = ('-is_installed', '-is_certified', 'name')
-
-    def render_title_long(self, value, record):
-        if record.static:
-            return value
-        url = reverse('core:plugin', args=[record.config_name])
-        return mark_safe(f"<a href='{url}'>{value}</a>")
+        order_by = ('-is_installed', '-is_certified', 'title_long')

+ 10 - 0
netbox/core/tables/template_code.py

@@ -27,6 +27,16 @@ PLUGIN_IS_INSTALLED = """
 {% endif %}
 """
 
+PLUGIN_NAME_TEMPLATE = """
+{% load static %}
+{% if record.icon_url %}
+    <img class="plugin-icon" src="{{ record.icon_url }}">
+{% else %}
+    <img class="plugin-icon" src="{% static 'plugin-default.svg' %}">
+{% endif %}
+<a href="{% url 'core:plugin' record.config_name %}">{{ record.title_long }}</a>
+"""
+
 DATA_SOURCE_SYNC_BUTTON = """
 {% load helpers %}
 {% load i18n %}

+ 1 - 0
netbox/project-static/img/plugin-default.svg

@@ -0,0 +1 @@
+<svg  xmlns="http://www.w3.org/2000/svg"  width="24"  height="24"  viewBox="0 0 24 24"  fill="none"  stroke="currentColor"  stroke-width="2"  stroke-linecap="round"  stroke-linejoin="round"  class="icon icon-tabler icons-tabler-outline icon-tabler-box"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 3l8 4.5l0 9l-8 4.5l-8 -4.5l0 -9l8 -4.5" /><path d="M12 12l8 -4.5" /><path d="M12 12l0 9" /><path d="M12 12l-8 -4.5" /></svg>