feat: Wiki-Links in Tree View als klickbare Namen anzeigen

Änderungen:
- maintenance_equipment.py: Zwei neue computed HTML-Felder hinzugefügt:
  - wiki_doku_link: Zeigt wiki_doku_id als Link zur Dokumentations-Seite
  - wiki_status_link: Zeigt wiki_status_id als Link zur Odoo-Status-Seite
- maintenance_equipment_views.xml: Tree View erweitert mit Wiki-Links
  - Wiki Doku: Standardmäßig sichtbar (optional='show')
  - Wiki Status: Standardmäßig ausgeblendet (optional='hide')
- maintenance_equipment_views.xml: Formular-Layout verbessert
  - Doku-Seite mit prominentem Link oben

Nutzen:
- Benutzer sehen jetzt 'sabko-laser' statt vollständige URL
- Links sind klickbar und öffnen in neuem Tab
- Übersichtlichere List View mit relevanten Wiki-Informationen
This commit is contained in:
Matthias Lotz 2026-01-19 20:57:43 +01:00
parent 77cd3f4595
commit 75d91984d1
2 changed files with 62 additions and 10 deletions

View File

@ -110,6 +110,48 @@ class MaintenanceEquipment(models.Model):
default=True,
help='Bei Änderungen automatisch zum Wiki synchronisieren'
)
wiki_doku_link = fields.Html(
string='Wiki Doku',
compute='_compute_wiki_doku_link',
sanitize=False,
help='Klickbarer Link zur Wiki-Dokumentationsseite'
)
wiki_status_link = fields.Html(
string='Wiki Status',
compute='_compute_wiki_status_link',
sanitize=False,
help='Klickbarer Link zur Wiki-Status-Seite (Odoo-Daten)'
)
@api.depends('wiki_doku_id', 'wiki_page_url')
def _compute_wiki_doku_link(self):
"""
Generiert einen HTML-Link mit wiki_doku_id als Text und wiki_page_url als Ziel.
"""
for record in self:
if record.wiki_doku_id and record.wiki_page_url:
record.wiki_doku_link = f'<a href="{record.wiki_page_url}" target="_blank" style="color: #007bff;">{record.wiki_doku_id}</a>'
else:
record.wiki_doku_link = ''
@api.depends('wiki_status_id', 'name', 'comp_serial_no', 'ows_area_id')
def _compute_wiki_status_link(self):
"""
Generiert einen HTML-Link mit wiki_status_id als Text zur Odoo-Status-Seite.
"""
dokuwiki_client = self.env['dokuwiki.client']
for record in self:
# wiki_status_id dynamisch berechnen falls noch nicht gesetzt
wiki_status_id = record.wiki_status_id or record._get_wiki_status_id()
if wiki_status_id and record.ows_area_id:
status_page_id = record._get_wiki_status_page_id()
if status_page_id:
status_url = dokuwiki_client.get_wiki_url(status_page_id)
record.wiki_status_link = f'<a href="{status_url}" target="_blank" style="color: #007bff;">{wiki_status_id}</a>'
else:
record.wiki_status_link = ''
else:
record.wiki_status_link = ''
@api.depends('ows_area_id')
def _compute_wiki_page_url(self):

View File

@ -1,6 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Equipment Tree View Extension - Wiki Link -->
<record id="maintenance_equipment_view_tree_dokuwiki" model="ir.ui.view">
<field name="name">maintenance.equipment.tree.dokuwiki</field>
<field name="model">maintenance.equipment</field>
<field name="inherit_id" ref="maintenance.hr_equipment_view_tree"/>
<field name="arch" type="xml">
<!-- Wiki Doku-Link nach dem Namen -->
<field name="name" position="after">
<field name="wiki_doku_link" widget="html" string="Wiki Doku" optional="show"/>
<field name="wiki_status_link" widget="html" string="Wiki Status" optional="hide"/>
</field>
</field>
</record>
<!-- Equipment Form View Extension -->
<record id="maintenance_equipment_view_form_dokuwiki" model="ir.ui.view">
<field name="name">maintenance.equipment.form.dokuwiki</field>
@ -32,20 +46,16 @@
<xpath expr="//notebook" position="inside">
<page string="Wiki" name="wiki">
<group>
<group string="Wiki Seiten Namen" colspan="2">
<group>
<field name="wiki_status_id" string="Wiki Status Seite" readonly="1"/>
</group>
<group>
<field name="wiki_doku_id" string="Wiki Dokumentations Seite"/>
</group>
<group string="Wiki Dokumentations-Seite (Benutzer-Doku)" colspan="2">
<field name="wiki_doku_id" string="Seitenname"/>
<field name="wiki_page_url" widget="url" string="🔗 Zur Doku-Seite" class="oe_link"/>
</group>
</group>
<group>
<group string="Wiki URL">
<field name="wiki_page_url" widget="url" readonly="1"/>
<group string="Wiki Status-Seite (Odoo-Daten, automatisch)">
<field name="wiki_status_id" string="Seitenname" readonly="1"/>
</group>
<group string="Status">
<group string="Synchronisations-Status">
<field name="wiki_synced" readonly="1"/>
<field name="wiki_last_sync" readonly="1"/>
<field name="wiki_auto_sync"/>