Add IMAP configuration UI and sidebar navigation for email inbox

- Email settings page at /administration/email/ with IMAP config form
- Connection test button to verify IMAP connectivity
- Sidebar link "E-Mail Eingang" for quick access
- AppConfiguration model extended with email category and password type
- init_config command includes IMAP default settings
- DB-based IMAP config with env var fallback

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
SysAdmin Agent
2026-03-11 21:01:05 +00:00
parent 96204c04dd
commit 2a7c9d8529
8 changed files with 241 additions and 12 deletions

View File

@@ -27,7 +27,7 @@
<div class="card mb-4">
<div class="card-header">
<h4 class="mb-0">
<i class="fas fa-{% if category_name == 'Paperless Integration' %}file-alt{% elif category_name == 'System' %}cog{% elif category_name == 'Database' %}database{% else %}folder{% endif %}"></i>
<i class="fas fa-{% if category_name == 'Paperless Integration' %}file-alt{% elif category_name == 'E-Mail / IMAP' %}envelope{% elif category_name == 'System' %}cog{% elif category_name == 'Database' %}database{% else %}folder{% endif %}"></i>
{{ category_name }}
</h4>
</div>
@@ -49,9 +49,9 @@
{% if setting.setting_type == 'boolean' %}
<div class="form-check">
<input type="checkbox"
class="form-check-input"
id="setting_{{ setting.key }}"
<input type="checkbox"
class="form-check-input"
id="setting_{{ setting.key }}"
name="setting_{{ setting.key }}"
value="True"
{% if setting.get_typed_value %}checked{% endif %}
@@ -63,17 +63,24 @@
{% if not setting.get_typed_value %}
<input type="hidden" name="setting_{{ setting.key }}" value="False">
{% endif %}
{% elif setting.setting_type == 'integer' %}
<input type="number"
class="form-control"
id="setting_{{ setting.key }}"
{% elif setting.setting_type == 'password' %}
<input type="password"
class="form-control"
id="setting_{{ setting.key }}"
name="setting_{{ setting.key }}"
value="{{ setting.value }}"
{% if setting.is_system %}readonly{% endif %}>
{% elif setting.setting_type == 'integer' or setting.setting_type == 'number' %}
<input type="number"
class="form-control"
id="setting_{{ setting.key }}"
name="setting_{{ setting.key }}"
value="{{ setting.get_typed_value }}"
{% if setting.is_system %}readonly{% endif %}>
{% elif setting.setting_type == 'text' or setting.setting_type == 'url' %}
<input type="{% if setting.setting_type == 'url' %}url{% else %}text{% endif %}"
class="form-control"
id="setting_{{ setting.key }}"
<input type="{% if setting.setting_type == 'url' %}url{% else %}text{% endif %}"
class="form-control"
id="setting_{{ setting.key }}"
name="setting_{{ setting.key }}"
value="{{ setting.value }}"
{% if setting.is_system %}readonly{% endif %}>