<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Plugin-Entwicklung on Handbuch</title><link>https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/</link><description>Recent content in Plugin-Entwicklung on Handbuch</description><generator>Hugo</generator><language>de</language><lastBuildDate>Sat, 06 Jun 2026 19:00:45 +0200</lastBuildDate><atom:link href="https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/index.xml" rel="self" type="application/rss+xml"/><item><title>WebView2 in PowerShell</title><link>https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/webview2-in-powershell/</link><pubDate>Sat, 06 Jun 2026 16:40:43 +0200</pubDate><guid>https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/webview2-in-powershell/</guid><description>&lt;p>&lt;a href="../.">Übersicht&lt;/a>&lt;/p>
&lt;h1 id="webview2-in-powershell">
 WebView2 in PowerShell
 &lt;a class="anchor" href="#webview2-in-powershell">#&lt;/a>
&lt;/h1>
&lt;p>Die GUI eines EULANDA-Plugins ist kein eigenes Programm und kein externer Browser, sondern ein
&lt;strong>echter Chromium (Microsoft Edge WebView2), der direkt im PowerShell-Prozess läuft&lt;/strong>. Ein
schlankes WPF-Fenster hostet die WebView2-Komponente; darin läuft die Oberfläche als
HTML/CSS/JavaScript. Das ist die Technik, die ein modernes, plattform-einheitliches UI
erlaubt, ohne dass das Plugin einen Webserver, ein Framework-Projekt oder eine separate
Laufzeit mitbringen muss - alles steckt in einem PowerShell-Modul.&lt;/p></description></item><item><title>Das WebKit im Schaufenster</title><link>https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/webkit-schaufenster/</link><pubDate>Sat, 06 Jun 2026 19:00:45 +0200</pubDate><guid>https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/webkit-schaufenster/</guid><description>&lt;p>&lt;a href="../.">Übersicht&lt;/a>&lt;/p>
&lt;h1 id="das-webkit-im-schaufenster">
 Das WebKit im Schaufenster
 &lt;a class="anchor" href="#das-webkit-im-schaufenster">#&lt;/a>
&lt;/h1>
&lt;p>Eine Oberfläche für ein EULANDA-Plugin zu bauen fühlt sich an wie HTML schreiben - nur dass am
Ende kein nacktes Formular steht, sondern ein fertiger, themenfähiger, mehrsprachiger Dialog.
Das WebKit aus EulandaXtools liefert dafür einen ganzen Satz &lt;code>eul-*&lt;/code>-Bausteine: Sie kennen Hell-
und Dunkelmodus, sie sind lokalisiert, sie sehen über alle Plugins gleich aus - und man bindet
sie ein, indem man ein Tag schreibt. Kein Framework-Projekt, kein Build-Schritt, keine
Node-Toolchain.&lt;/p></description></item><item><title>Dialog-Aufbau und Bausteine</title><link>https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/dialog-und-bausteine/</link><pubDate>Sat, 06 Jun 2026 16:40:43 +0200</pubDate><guid>https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/dialog-und-bausteine/</guid><description>&lt;p>&lt;a href="../.">Übersicht&lt;/a>&lt;/p>
&lt;h1 id="dialog-aufbau-und-bausteine">
 Dialog-Aufbau und Bausteine
 &lt;a class="anchor" href="#dialog-aufbau-und-bausteine">#&lt;/a>
&lt;/h1>
&lt;p>Alle Plugin-Dialoge folgen demselben Aufbau, damit sie sich für den Anwender gleich anfühlen.
Die Struktur liefert die &lt;code>eul-app&lt;/code>-Komponente mit benannten Slots.&lt;/p>
&lt;h2 id="standard-aufbau">
 Standard-Aufbau
 &lt;a class="anchor" href="#standard-aufbau">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Kopfleiste&lt;/strong> (oben) mit Logo und App-Titel links; rechts die &lt;strong>Aktionsleiste&lt;/strong> mit den
globalen Aktionen, in dieser Reihenfolge: &lt;strong>Nachrichten-Verlauf, Sprachumschaltung,
Über (About), Theme Automatisch / Hell / Dunkel&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Seitenleiste&lt;/strong> (links) mit der &lt;strong>Navigationsleiste&lt;/strong> (&lt;code>eul-sidebar&lt;/code> + &lt;code>eul-page&lt;/code>): die
Hauptpunkte des Plugins. Bei wenigen Seiten alternativ &lt;code>eul-ribbon&lt;/code> (Reiter oben statt Sidebar).&lt;/li>
&lt;li>&lt;strong>Inhalt&lt;/strong> je Seite: ein statischer Teil (z.B. die Quell-/Filterzeile) und - nur wenn nötig
&lt;ul>
&lt;li>&lt;strong>Tabs&lt;/strong> (&lt;code>eul-tabs&lt;/code>, rein CSS-basiert) für weitere Optionen.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Statusleiste&lt;/strong> (unten) mit Statustext und Schließen-Button.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#f92672">eul-app&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">header&lt;/span> &lt;span style="color:#a6e22e">slot&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;header&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">eul-image&lt;/span> &lt;span style="color:#a6e22e">slot&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;logo&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">src&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;eulimg/eulanda-logo.png&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">width&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;32&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">height&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;32&amp;#34;&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#f92672">eul-image&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">h1&lt;/span> &lt;span style="color:#a6e22e">slot&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;title&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">data-i18n&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;app.title&amp;#34;&lt;/span>&amp;gt;{{app.title}}&amp;lt;/&lt;span style="color:#f92672">h1&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">div&lt;/span> &lt;span style="color:#a6e22e">slot&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;actions&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">eul-row&lt;/span> &lt;span style="color:#a6e22e">gap&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;2&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;!-- Nachrichten-Verlauf, Sprachumschaltung, About, Theme (auto/hell/dunkel) --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">eul-row&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">div&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">header&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">eul-sidebar&lt;/span> &lt;span style="color:#a6e22e">slot&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;body&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">nav&lt;/span> &lt;span style="color:#a6e22e">slot&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;nav&amp;#34;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">a&lt;/span> &lt;span style="color:#a6e22e">data-page&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;page-start&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">active&lt;/span>&amp;gt;&amp;lt;&lt;span style="color:#f92672">eul-icon&lt;/span> &lt;span style="color:#a6e22e">name&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;file&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">size&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;14&amp;#34;&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#f92672">eul-icon&lt;/span>&amp;gt; Start&amp;lt;/&lt;span style="color:#f92672">a&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">a&lt;/span> &lt;span style="color:#a6e22e">data-page&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;page-statistik&amp;#34;&lt;/span>&amp;gt;&amp;lt;&lt;span style="color:#f92672">eul-icon&lt;/span> &lt;span style="color:#a6e22e">name&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;info&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">size&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;14&amp;#34;&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#f92672">eul-icon&lt;/span>&amp;gt; Statistik&amp;lt;/&lt;span style="color:#f92672">a&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">nav&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">eul-page&lt;/span> &lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;page-start&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">active&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">eul-card&lt;/span>&amp;gt;&lt;span style="color:#75715e">&amp;lt;!-- statischer Teil: Quelle/Filter --&amp;gt;&lt;/span>&amp;lt;/&lt;span style="color:#f92672">eul-card&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">eul-card&lt;/span>&amp;gt;&amp;lt;&lt;span style="color:#f92672">eul-grid&lt;/span> &lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;gResults&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">search&lt;/span> &lt;span style="color:#a6e22e">pagination&lt;/span> &lt;span style="color:#a6e22e">sort&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#f92672">eul-grid&lt;/span>&amp;gt;&amp;lt;/&lt;span style="color:#f92672">eul-card&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">eul-page&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#f92672">eul-page&lt;/span> &lt;span style="color:#a6e22e">id&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;page-statistik&amp;#34;&lt;/span>&amp;gt;&lt;span style="color:#75715e">&amp;lt;!-- ... --&amp;gt;&lt;/span>&amp;lt;/&lt;span style="color:#f92672">eul-page&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;/&lt;span style="color:#f92672">eul-sidebar&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#f92672">eul-app&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>So sehen die Zonen in einem echten Plugin (EulandaXdatanorm) aus - die jeweils erklärte Zone
ist hell, der Rest abgedunkelt:&lt;/p></description></item><item><title>Einbindung und Auslieferung</title><link>https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/einbindung-und-auslieferung/</link><pubDate>Sat, 06 Jun 2026 13:32:35 +0200</pubDate><guid>https://sdk.eulanda.eu/de/docs/Plugin-Entwicklung/einbindung-und-auslieferung/</guid><description>&lt;p>&lt;a href="../.">Übersicht&lt;/a>&lt;/p>
&lt;h1 id="einbindung-in-eulanda-und-auslieferung">
 Einbindung in EULANDA und Auslieferung
 &lt;a class="anchor" href="#einbindung-in-eulanda-und-auslieferung">#&lt;/a>
&lt;/h1>
&lt;p>Ein Plugin besteht aus drei Teilen: den &lt;strong>headless Fachfunktionen&lt;/strong>, dem &lt;strong>GUI-Einstieg&lt;/strong> und
der &lt;strong>cnreg-Action&lt;/strong>, die EULANDA den Aufruf als Menü- oder Kontextpunkt bekannt macht. Dazu
kommt die Auslieferung (Modulpfad, Paket).&lt;/p>
&lt;h2 id="headless-einstieg-caller-owns-connection">
 Headless-Einstieg (Caller-owns-Connection)
 &lt;a class="anchor" href="#headless-einstieg-caller-owns-connection">#&lt;/a>
&lt;/h2>
&lt;p>Der öffentliche Einstieg ist parameter-gesteuert und damit headless lauffähig. Die GUI ruft ihn
genauso wie ein Batch-Lauf.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-powershell" data-lang="powershell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">function&lt;/span> Show-MyPlugin {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [CmdletBinding()]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">param&lt;/span>([Parameter(&lt;span style="color:#a6e22e">Mandatory&lt;/span>)][&lt;span style="color:#66d9ef">string&lt;/span>]$Udl, [&lt;span style="color:#66d9ef">string&lt;/span>]$Language = &lt;span style="color:#e6db74">&amp;#39;DE&amp;#39;&lt;/span>, $Task)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># GUI: Dialog bauen und Fachfunktionen mit -Udl rufen (siehe WebView2-Seite).&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">function&lt;/span> Invoke-MyReconciliation {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [CmdletBinding()]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">param&lt;/span>([&lt;span style="color:#66d9ef">__ComObject&lt;/span>]$Conn, [&lt;span style="color:#66d9ef">string&lt;/span>]$Udl, [&lt;span style="color:#66d9ef">string&lt;/span>]$ConnStr)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># Verbindung nach Caller-owns-Connection: -Conn (bleibt offen) ODER -Udl/-ConnStr&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># (selbst öffnen und am Ende schließen). Reine Fachlogik, keine GUI.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>So ist jede Funktion einzeln test- und serverbar; die Oberfläche bleibt austauschbarer Komfort.&lt;/p></description></item></channel></rss>