diff --git a/web_interface/templates/v3/partials/plugin_config.html b/web_interface/templates/v3/partials/plugin_config.html index 937d1fd7..ed59da87 100644 --- a/web_interface/templates/v3/partials/plugin_config.html +++ b/web_interface/templates/v3/partials/plugin_config.html @@ -177,95 +177,105 @@ {% endfor %} {% else %} - {# Check if it's an array of objects (like custom_feeds) - use simple table interface #} + {# Check for custom-feeds widget first #} {% set items_schema = prop.get('items') or {} %} - {% set is_array_of_objects = items_schema.get('type') == 'object' and items_schema.get('properties') %} - {% if is_array_of_objects %} - {# Simple table-based interface for custom feeds #} + {% if x_widget == 'custom-feeds' %} + {# Custom feeds table interface - widget-specific implementation #} + {# Validate that required fields exist in schema #} {% set item_properties = items_schema.get('properties', {}) %} - {% set max_items = prop.get('maxItems', 50) %} - {% set array_value = value if value is not none and value is iterable and value is not string else (prop.default if prop.default is defined and prop.default is iterable and prop.default is not string else []) %} - -
| Name | -URL | -Logo | -Enabled | -Actions | -||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - - | -- - | -
- {% set logo_value = item.get('logo') or {} %}
- {% set logo_path = logo_value.get('path', '') %}
-
-
+ {% if not (item_properties.get('name') and item_properties.get('url')) %}
+ {# Fallback to generic if schema doesn't match expected structure #}
+ + + Custom feeds widget requires 'name' and 'url' properties in items schema. + + {% else %} + {% set max_items = prop.get('maxItems', 50) %} + {% set array_value = value if value is not none and value is iterable and value is not string else (prop.default if prop.default is defined and prop.default is iterable and prop.default is not string else []) %} + +
+
+
|
+