Add node docs, collabora purple UI, and portable install env

Human-readable help in all six palette nodes, docs/NODES.md with usage examples, expanded example flows, and auto-detect NODERED_DIR plus CODE bridge IP from .env on any VM.
This commit is contained in:
root
2026-08-22 17:10:34 +02:00
parent 5d4d7a58e6
commit 4fb614be87
13 changed files with 558 additions and 50 deletions
+24 -4
View File
@@ -1,7 +1,7 @@
<script type="text/javascript">
RED.nodes.registerType('collabora-bridge', {
category: 'nextcloud collabora',
color: '#e67e22',
color: '#7950a2',
defaults: {
name: { value: '' },
config: { type: 'nc-collab-config', required: true },
@@ -41,7 +41,27 @@
</script>
<script type="text/html" data-help-name="collabora-bridge">
<p>Agent-pipelines: NC-fil → konvertering → WebDAV PUT under <code>/Dokument/OfficeOut/</code>.</p>
<p>Skriver aldrig över original. Sätt <code>msg.allowOverwrite=true</code> för annan destNcPath.</p>
<p>Överstyr via <code>msg.operation</code>. Standardfält: <code>ncPath</code>, <code>destNcPath</code>, <code>format</code>, <code>fields</code>, <code>compareNcPath</code>.</p>
<p><strong>Färdiga pipelines.</strong> Kedjar WebDAV + CODE + (ibland) OCS och skriver oftast tillbaka till Nextcloud. Det här är noden du når efter oftast.</p>
<p>Defaultmål: <code>/Dokument/OfficeOut/</code> om du inte sätter <code>destNcPath</code> / <code>destFolder</code> / <code>destName</code>.</p>
<table style="width:100%; font-size:11px;">
<tr><th>Operation</th><th>Resultat</th></tr>
<tr><td><code>ncFileToPdf</code></td><td>PDF i NC</td></tr>
<tr><td><code>ncFileToPng</code></td><td>Förhandsvisning PNG</td></tr>
<tr><td><code>ncFileToHtml</code></td><td>HTML i NC</td></tr>
<tr><td><code>htmlToOffice</code></td><td>HTML/text → docx/pdf …</td></tr>
<tr><td><code>fillTemplateSave</code></td><td>Fyll mall via OCS, spara i NC</td></tr>
<tr><td><code>compareVersionsPdf</code></td><td>Diff-PDF (ny + <code>compareNcPath</code>)</td></tr>
<tr><td><code>extractToPayload</code></td><td>JSON i <code>msg.fields</code> / <code>msg.structure</code></td></tr>
<tr><td><code>createAssetLink</code></td><td><code>msg.assetUrl</code> för infogning</td></tr>
</table>
<p>Överstyr via <code>msg.operation</code>. Skriver inte över original utan <code>msg.allowOverwrite=true</code>.</p>
<p>De andra noderna i paletten är byggstenar när bridge inte räcker.</p>
<pre>inject { ncPath: "/Dokument/avtal.docx" }
→ collabora-bridge (ncFileToPdf)
→ debug { destNcPath: "/Dokument/OfficeOut/avtal.pdf" }</pre>
<p><strong>Tumregel:</strong> PDF i Nextcloud → <code>ncFileToPdf</code>. Mall + spara → <code>fillTemplateSave</code>. Öppna i webbläsare → <code>nc-office document:direct</code>.</p>
</script>
+23 -4
View File
@@ -1,7 +1,7 @@
<script type="text/javascript">
RED.nodes.registerType('collabora-convert', {
category: 'nextcloud collabora',
color: '#0082c9',
color: '#7950a2',
defaults: {
name: { value: '' },
config: { type: 'nc-collab-config', required: true },
@@ -42,7 +42,26 @@
</script>
<script type="text/html" data-help-name="collabora-convert">
<p>Låg nivå: <code>/cool/convert-to</code> mot CODE.</p>
<p>Ingång: <code>msg.ncPath</code> eller <code>msg.payload</code> (Buffer). Valfritt <code>msg.format</code>, <code>msg.templateNcPath</code>, <code>msg.compareNcPath</code>.</p>
<p>Utdata: <code>msg.payload</code> (Buffer). Sparar inte till Nextcloud — använd bridge eller WebDAV PUT efteråt.</p>
<p><strong>Gör om filen till annat format.</strong> Skickar dokument till CODE och får tillbaka binär data (pdf, png, docx, odt, html, xlsx, pptx …). Sparar inte i Nextcloud — resultatet ligger i <code>msg.payload</code> som Buffer.</p>
<h4>Varifrån</h4>
<p>Filinnehåll, i ordning:</p>
<ol>
<li><code>msg.payload</code> om det redan är Buffer/text</li>
<li>annars WebDAV GET av <code>msg.ncPath</code></li>
</ol>
<p>Valfritt: <code>msg.templateNcPath</code> (mall), <code>msg.compareNcPath</code> (jämförelsefil).</p>
<h4>Vart</h4>
<p>POST multipart → <code>/cool/convert-to/&lt;format&gt;</code> på CODE. Fält: <code>data</code> = källfilen.</p>
<h4>Ut</h4>
<p><code>msg.payload</code>, <code>msg.filename</code>, <code>msg.format</code>, <code>msg.contentType</code>, <code>msg.statusCode</code></p>
<h4>När</h4>
<p>När du själv styr nästa steg: spara med WebDAV/OCS, mejla, Talk, eller skicka vidare. Vill du ha PDF i Nextcloud direkt — använd <code>collabora-bridge</code> (<code>ncFileToPdf</code>).</p>
<pre>inject { ncPath: "/Dokument/avtal.docx", format: "pdf" }
→ collabora-convert
→ debug (payload = PDF-bytes)</pre>
</script>
+20 -3
View File
@@ -1,7 +1,7 @@
<script type="text/javascript">
RED.nodes.registerType('collabora-extract', {
category: 'nextcloud collabora',
color: '#0082c9',
color: '#7950a2',
defaults: {
name: { value: '' },
config: { type: 'nc-collab-config', required: true },
@@ -32,6 +32,23 @@
</script>
<script type="text/html" data-help-name="collabora-extract">
<p><code>/cool/extract-document-structure</code></p>
<p>Ingång: <code>msg.ncPath</code> eller Buffer i <code>msg.payload</code>. Valfritt <code>msg.filter</code>.</p>
<p><strong>Lista vad som finns i dokumentet.</strong> Content controls, fält, ev. annan struktur beroende på filter. Returnerar JSON — ingen ny fil.</p>
<h4>Varifrån</h4>
<p>Samma som convert: <code>msg.payload</code> eller WebDAV GET <code>msg.ncPath</code>.</p>
<p>Filter: dropdown eller <code>msg.filter</code>. Default <code>contentcontrol</code>.</p>
<h4>Vart</h4>
<p>POST multipart → <code>/cool/extract-document-structure</code></p>
<h4>Ut</h4>
<p><code>msg.payload</code> och <code>msg.structure</code> = struktur-JSON</p>
<h4>När</h4>
<p>Innan du fyller en mall. Du får fältnamnen (Kund, Datum …) så nästa nod vet vad den ska slå in.</p>
<pre>inject { ncPath: "/Mallar/avtal.docx" }
→ collabora-extract (filter: contentcontrol)
→ function (mappa data till fältnamn)
→ collabora-transform / nc-office / bridge fillTemplateSave</pre>
</script>
+22 -3
View File
@@ -1,7 +1,7 @@
<script type="text/javascript">
RED.nodes.registerType('collabora-transform', {
category: 'nextcloud collabora',
color: '#0082c9',
color: '#7950a2',
defaults: {
name: { value: '' },
config: { type: 'nc-collab-config', required: true }
@@ -27,6 +27,25 @@
</script>
<script type="text/html" data-help-name="collabora-transform">
<p><code>/cool/transform-document-structure</code></p>
<p>Ingång: källa via <code>msg.ncPath</code> eller <code>msg.payload</code>, plus <code>msg.transform</code> (JSON).</p>
<p><strong>Skriv in värden i dokumentet.</strong> Tar dokument + JSON med fält/transform och ber CODE fylla i. Resultat = ny dokument-binär, inte JSON.</p>
<h4>Varifrån</h4>
<ul>
<li>Dokument: <code>msg.payload</code> eller <code>msg.ncPath</code> (WebDAV)</li>
<li>Instruktion: <code>msg.transform</code> eller <code>msg.fields</code> — måste finnas</li>
</ul>
<h4>Vart</h4>
<p>POST multipart → <code>/cool/transform-document-structure</code>. Fält: <code>data</code> = filen, <code>transform</code> = JSON.</p>
<h4>Ut</h4>
<p><code>msg.payload</code> = ändrad fil (Buffer), plus <code>contentType</code></p>
<h4>När</h4>
<p>Fylla mall via CODE direkt, inte Nextclouds mall-API. Spara själv efteråt (WebDAV PUT / bridge / nc-office) om filen ska ligga i molnet.</p>
<pre>msg.ncPath = "/Mallar/avtal.docx"
msg.fields = { "Kund": "AB Exempel", "Datum": "2026-08-22" }
→ collabora-transform
→ (spara eller konvertera till PDF)</pre>
</script>
+24 -3
View File
@@ -1,7 +1,7 @@
<script type="text/javascript">
RED.nodes.registerType('collabora-wopi', {
category: 'nextcloud collabora',
color: '#0082c9',
color: '#7950a2',
defaults: {
name: { value: '' },
config: { type: 'nc-collab-config', required: true },
@@ -38,6 +38,27 @@
</script>
<script type="text/html" data-help-name="collabora-wopi">
<p>WOPI discovery/capabilities och editor-URL. Agenten ska nästan aldrig PutFile — använd WebDAV PUT.</p>
<p><code>buildEditor</code>: <code>msg.wopiSrc</code> + <code>msg.token</code> → <code>msg.editorUrl</code>.</p>
<p>Inte filkonvertering — hälsokoll och WOPI-hjälp mot CODE.</p>
<table style="width:100%; font-size:12px;">
<tr><th>Operation</th><th>Du får</th></tr>
<tr><td><code>capabilities</code></td><td>JSON: vad CODE kan (convert-to m.m.)</td></tr>
<tr><td><code>discovery</code></td><td>XML: mime → editor-URL</td></tr>
<tr><td><code>buildEditor</code></td><td><code>msg.editorUrl</code> från <code>msg.wopiSrc</code> + <code>msg.token</code></td></tr>
<tr><td><code>checkFileInfo</code></td><td>JSON om filen (WOPI-host, oftast Nextcloud)</td></tr>
<tr><td><code>getFile</code></td><td>filbytes via WOPI GET</td></tr>
</table>
<p><code>buildEditor</code> sätter ungefär:<br>
<code>{collaboraPublicUrl}/browser/dist/cool.html?WOPISrc=...&amp;access_token=...</code><br>
Publik URL = Nextcloud/proxy (<code>https://cloud.hannesahlin.se</code>), inte intern CODE-IP.</p>
<h4>När</h4>
<ul>
<li>Första test att CODE lever → <code>capabilities</code></li>
<li>WOPI-token från <code>nc-office document:direct</code> → bygg iframe-URL</li>
<li>Felsökning. Spara filer via WebDAV, inte WOPI PutFile.</li>
</ul>
<pre>inject → collabora-wopi (capabilities) → debug</pre>
</script>
+14 -4
View File
@@ -4,7 +4,7 @@
defaults: {
name: { value: '' },
nextcloudUrl: { value: 'https://cloud.hannesahlin.se', required: true },
collaboraUrl: { value: 'http://172.17.0.2:9980', required: true },
collaboraUrl: { value: 'https://172.17.0.2:9980', required: true },
collaboraPublicUrl: { value: 'https://cloud.hannesahlin.se' },
username: { value: '', required: true },
verifyTls: { value: false }
@@ -50,7 +50,17 @@
</script>
<script type="text/html" data-help-name="nc-collab-config">
<p>En instans per miljö. Använd <strong>app-lösenord</strong>, aldrig vanligt kontolösen.</p>
<p><code>collaboraUrl</code>: <code>http://172.17.0.2:9980</code> (CODE på Docker bridge). Host-loopback 127.0.0.1:9980 når sidecar inte.</p>
<p><code>collaboraPublicUrl</code>: publik WOPI-värd, t.ex. <code>https://cloud.hannesahlin.se</code>.</p>
<p>Config-nod — syns inte i paletten som flödesnod, men alla sex Collabora-noder behöver en sådan här.</p>
<p>Utan config gör inget av dem något.</p>
<h4>Två backender</h4>
<ul>
<li><strong>Nextcloud</strong> (<code>nextcloudUrl</code>) — filer via WebDAV + Office-API (OCS richdocuments). T.ex. <code>https://cloud.hannesahlin.se</code></li>
<li><strong>Collabora CODE</strong> (<code>collaboraUrl</code>) — konverteringsmotorn (<code>/cool/...</code>). Intern Docker bridge, t.ex. <code>https://172.17.0.2:9980</code>. IP hämtas vid install med <code>docker inspect</code> — hardkoda inte blint.</li>
</ul>
<p><strong>Auth:</strong> användarnamn + <em>app-lösenord</em>. Inte vanligt kontolösen.</p>
<p><code>collaboraPublicUrl</code> — vad webbläsaren ska se vid WOPI/editor-länkar (proxad CODE via Nextcloud). Intern IP funkar inte i iframe.</p>
<p><code>verifyTls</code> — stäng av mot intern CODE om cert inte matchar IP/host.</p>
<p>Standardutdata i bridge om du inte anger mål: <code>/Dokument/OfficeOut/</code></p>
</script>
+21 -2
View File
@@ -1,7 +1,7 @@
<script type="text/javascript">
RED.nodes.registerType('nc-office', {
category: 'nextcloud collabora',
color: '#46ba61',
color: '#7950a2',
defaults: {
name: { value: '' },
config: { type: 'nc-collab-config', required: true },
@@ -41,6 +41,25 @@
</script>
<script type="text/html" data-help-name="nc-office">
<p>Richdocuments OCS — mallar, fält, direkt-URL, assets.</p>
<p><strong>Nextcloud Office-API.</strong> Trafik till Nextcloud OCS richdocuments — inte direkt till <code>/cool</code> (utom <code>files:convert</code> som internt kör WebDAV + CODE + WebDAV).</p>
<p>Bas: <code>.../ocs/v2.php/apps/richdocuments/api/v1/...</code></p>
<table style="width:100%; font-size:11px;">
<tr><th>Operation</th><th>Gör</th></tr>
<tr><td><code>templates:list</code></td><td>Lista mallar (ev. <code>templateType</code>)</td></tr>
<tr><td><code>templates:create</code></td><td>Ny fil från NC-mall</td></tr>
<tr><td><code>template:extractFields</code></td><td>Fält-JSON (som extract, via NC)</td></tr>
<tr><td><code>template:fillFields</code></td><td>Fyll mall, spara i NC</td></tr>
<tr><td><code>document:direct</code></td><td><code>editorUrl</code> — öppna fil i Office</td></tr>
<tr><td><code>document:public</code></td><td>Samma via <code>shareToken</code></td></tr>
<tr><td><code>files:convert</code></td><td>NC-fil → ny NC-fil (t.ex. PDF)</td></tr>
<tr><td><code>assets:create</code></td><td>Engångslänk för infogning i öppen editor</td></tr>
</table>
<p><code>fileId</code> kan saknas — slås upp med WebDAV PROPFIND från <code>ncPath</code>.</p>
<p>Överstyr via <code>msg.operation</code>. Gemensamma fält: <code>ncPath</code>, <code>fileId</code>, <code>destNcPath</code>, <code>fields</code>.</p>
<pre>inject { ncPath: "/Dokument/avtal.docx" }
→ nc-office (document:direct)
→ debug (editorUrl)</pre>
</script>