<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kochbuch.casilor.de/index.php?action=history&amp;feed=atom&amp;title=Workflow</id>
	<title>Workflow - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://kochbuch.casilor.de/index.php?action=history&amp;feed=atom&amp;title=Workflow"/>
	<link rel="alternate" type="text/html" href="https://kochbuch.casilor.de/index.php?title=Workflow&amp;action=history"/>
	<updated>2026-07-29T09:16:49Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in casis kochbuch</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://kochbuch.casilor.de/index.php?title=Workflow&amp;diff=878&amp;oldid=prev</id>
		<title>Casilor: Die Seite wurde neu angelegt: „__NOEDITSECTION__ = Workflow: Rezepte &amp; Bilder einpflegen =  == Grunddaten ==  {| class=&quot;wikitable&quot; |- ! Wiki-URL || https://kochbuch.casilor.de |- ! Login || &lt;code&gt;casilor&lt;/code&gt; (gespeichertes Passwort im Browser) |- ! Autor-Seite || Reinhild &amp; Lutz |- ! Bilderordner (Server) || &lt;code&gt;/htdocs/casilor-de/kochbuch/images/reinhild/KATEGORIENAME/&lt;/code&gt; |- ! Bilderordner (Web) || &lt;code&gt;https://kochbuch.casilor.de/images/reinhild/KATEGORIENAME/&lt;/code&gt; |}…“</title>
		<link rel="alternate" type="text/html" href="https://kochbuch.casilor.de/index.php?title=Workflow&amp;diff=878&amp;oldid=prev"/>
		<updated>2026-06-10T11:39:36Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „__NOEDITSECTION__ = Workflow: Rezepte &amp;amp; Bilder einpflegen =  == Grunddaten ==  {| class=&amp;quot;wikitable&amp;quot; |- ! Wiki-URL || https://kochbuch.casilor.de |- ! Login || &amp;lt;code&amp;gt;casilor&amp;lt;/code&amp;gt; (gespeichertes Passwort im Browser) |- ! Autor-Seite || &lt;a href=&quot;/index.php?title=Reinhild_%26_Lutz&quot; class=&quot;mw-redirect&quot; title=&quot;Reinhild &amp;amp; Lutz&quot;&gt;Reinhild &amp;amp; Lutz&lt;/a&gt; |- ! Bilderordner (Server) || &amp;lt;code&amp;gt;/htdocs/casilor-de/kochbuch/images/reinhild/KATEGORIENAME/&amp;lt;/code&amp;gt; |- ! Bilderordner (Web) || &amp;lt;code&amp;gt;https://kochbuch.casilor.de/images/reinhild/KATEGORIENAME/&amp;lt;/code&amp;gt; |}…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
= Workflow: Rezepte &amp;amp; Bilder einpflegen =&lt;br /&gt;
&lt;br /&gt;
== Grunddaten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Wiki-URL || https://kochbuch.casilor.de&lt;br /&gt;
|-&lt;br /&gt;
! Login || &amp;lt;code&amp;gt;casilor&amp;lt;/code&amp;gt; (gespeichertes Passwort im Browser)&lt;br /&gt;
|-&lt;br /&gt;
! Autor-Seite || [[Reinhild &amp;amp; Lutz]]&lt;br /&gt;
|-&lt;br /&gt;
! Bilderordner (Server) || &amp;lt;code&amp;gt;/htdocs/casilor-de/kochbuch/images/reinhild/KATEGORIENAME/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Bilderordner (Web) || &amp;lt;code&amp;gt;https://kochbuch.casilor.de/images/reinhild/KATEGORIENAME/&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Seitenstruktur ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Reinhild &amp;amp; Lutz                                    ← Hauptseite&lt;br /&gt;
  == [[Reinhild &amp;amp; Lutz/1. Salat …|1. Salat …]] ==  ← klickbare Überschrift → Unterseite&lt;br /&gt;
      └── [[Rezeptname]]                            ← eigenständige Rezeptseite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Workflow für neue Rezept-Batch ==&lt;br /&gt;
&lt;br /&gt;
=== Schritt 1 – PDFs lesen ===&lt;br /&gt;
&lt;br /&gt;
Die PDFs liegen direkt im Bilderordner auf dem Server, erreichbar über:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://kochbuch.casilor.de/images/reinhild/KATEGORIENAME/Dateiname.pdf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
→ Jedes PDF im Browser öffnen, Inhalt per Screenshot/Zoom erfassen (Titel, Zutaten, Zubereitung).&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2 – Bilder hochladen (via API) ===&lt;br /&gt;
&lt;br /&gt;
Alle JPGs aus dem Bilderordner per JavaScript-API ins MediaWiki laden.&lt;br /&gt;
Token holen, dann für jede Datei als Blob fetchen und hochladen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
(async () =&amp;gt; {&lt;br /&gt;
  const r = await fetch(&amp;#039;/api.php?action=query&amp;amp;meta=tokens&amp;amp;format=json&amp;#039;);&lt;br /&gt;
  const token = (await r.json()).query.tokens.csrftoken;&lt;br /&gt;
  const base = &amp;#039;/images/reinhild/KATEGORIENAME/&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  const files = [&lt;br /&gt;
    [&amp;#039;Server_Dateiname_01.jpg&amp;#039;, &amp;#039;Wiki Dateiname 01.jpg&amp;#039;],&lt;br /&gt;
    // weitere Einträge …&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  for (const [serverName, wikiName] of files) {&lt;br /&gt;
    const blob = await (await fetch(base + serverName)).blob();&lt;br /&gt;
    const fd = new FormData();&lt;br /&gt;
    fd.append(&amp;#039;action&amp;#039;, &amp;#039;upload&amp;#039;);  fd.append(&amp;#039;format&amp;#039;, &amp;#039;json&amp;#039;);&lt;br /&gt;
    fd.append(&amp;#039;filename&amp;#039;, wikiName); fd.append(&amp;#039;file&amp;#039;, blob, serverName);&lt;br /&gt;
    fd.append(&amp;#039;token&amp;#039;, token);      fd.append(&amp;#039;ignorewarnings&amp;#039;, &amp;#039;1&amp;#039;);&lt;br /&gt;
    const res = await (await fetch(&amp;#039;/api.php&amp;#039;, {method:&amp;#039;POST&amp;#039;, body:fd})).json();&lt;br /&gt;
    console.log(wikiName, res.upload?.result);&lt;br /&gt;
  }&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hinweis:&amp;#039;&amp;#039;&amp;#039; Wiki-Dateiname = Servername mit Unterstrichen durch Leerzeichen ersetzt.&lt;br /&gt;
Bei 404 → alternativen Dateinamen testen (z.B. &amp;lt;code&amp;gt;Eier_-_Thunfisch_-_...&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;Eier-_Thunfisch-_...&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3 – Unterseite für Kategorie anlegen ===&lt;br /&gt;
&lt;br /&gt;
URL aufrufen: &amp;lt;code&amp;gt;kochbuch.casilor.de/index.php?title=Reinhild_%26_Lutz%2FKATEGORIENAME&amp;amp;action=edit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inhalt:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
== Kategoriename ==&lt;br /&gt;
&lt;br /&gt;
=== [[Rezeptname 1]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[Rezeptname 2]] ===&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Reinhild &amp;amp; Lutz]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4 – Hauptseite aktualisieren ===&lt;br /&gt;
&lt;br /&gt;
In [[Reinhild &amp;amp; Lutz]] die neue Kategorie als klickbare Überschrift ergänzen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
== [[Reinhild &amp;amp; Lutz/Kategoriename|Kategoriename]] ==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5 – Rezeptseiten anlegen (via API) ===&lt;br /&gt;
&lt;br /&gt;
Für jedes Rezept eine eigenständige Seite erstellen (&amp;#039;&amp;#039;&amp;#039;kein&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;Reinhild &amp;amp; Lutz/&amp;lt;/code&amp;gt;-Präfix!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
(async () =&amp;gt; {&lt;br /&gt;
  const r = await fetch(&amp;#039;/api.php?action=query&amp;amp;meta=tokens&amp;amp;format=json&amp;#039;);&lt;br /&gt;
  const token = (await r.json()).query.tokens.csrftoken;&lt;br /&gt;
&lt;br /&gt;
  async function createPage(title, imageWikiName, content) {&lt;br /&gt;
    const text = `== ${title} ==\n[[Datei:${imageWikiName}|thumb|450px|right|${title}]]\n\n${content}\n\n[[Kategorie:Reinhild &amp;amp; Lutz]]`;&lt;br /&gt;
    const fd = new FormData();&lt;br /&gt;
    fd.append(&amp;#039;action&amp;#039;,&amp;#039;edit&amp;#039;); fd.append(&amp;#039;format&amp;#039;,&amp;#039;json&amp;#039;);&lt;br /&gt;
    fd.append(&amp;#039;title&amp;#039;, title);  fd.append(&amp;#039;text&amp;#039;, text);&lt;br /&gt;
    fd.append(&amp;#039;token&amp;#039;, token);&lt;br /&gt;
    const res = await (await fetch(&amp;#039;/api.php&amp;#039;, {method:&amp;#039;POST&amp;#039;, body:fd})).json();&lt;br /&gt;
    console.log(title, res.edit?.result);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  await createPage(&amp;#039;Rezeptname&amp;#039;, &amp;#039;Wiki Dateiname 01.jpg&amp;#039;, &amp;#039;=== Zutaten ===\n* ...\n\n=== Zubereitung ===\n...&amp;#039;);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 6 – Cache leeren ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
(async () =&amp;gt; {&lt;br /&gt;
  const pages = [&amp;#039;Rezeptname 1&amp;#039;, &amp;#039;Rezeptname 2&amp;#039;];&lt;br /&gt;
  for (const title of pages) {&lt;br /&gt;
    await fetch(`/api.php?action=purge&amp;amp;titles=${encodeURIComponent(title)}&amp;amp;format=json`, {method:&amp;#039;POST&amp;#039;});&lt;br /&gt;
  }&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Feste Regeln ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Regel !! Richtig !! Falsch&lt;br /&gt;
|-&lt;br /&gt;
| Seitentitel | &amp;lt;code&amp;gt;Antipasti Salat&amp;lt;/code&amp;gt; | &amp;lt;code&amp;gt;Reinhild &amp;amp; Lutz/Antipasti Salat&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Kategorie-Tag | &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Kategorie:Reinhild &amp;amp; Lutz]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; auf jeder Rezeptseite | fehlt&lt;br /&gt;
|-&lt;br /&gt;
| Bildgröße | &amp;lt;code&amp;gt;thumb&amp;amp;#124;450px&amp;amp;#124;right&amp;lt;/code&amp;gt; | andere Größe&lt;br /&gt;
|-&lt;br /&gt;
| Kategorie-Link Hauptseite | &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;== [[R &amp;amp; L/Kat|Kat]] ==&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; | Plain-Text-Überschrift&lt;br /&gt;
|-&lt;br /&gt;
| DISPLAYTITLE | &amp;#039;&amp;#039;&amp;#039;nicht verwenden&amp;#039;&amp;#039;&amp;#039; (wiki blockiert es) | &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{DISPLAYTITLE:...}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bild-Zuordnung ermitteln ==&lt;br /&gt;
&lt;br /&gt;
Wenn ein Dateiname unklar ist → Bild direkt im Browser öffnen und visuell prüfen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://kochbuch.casilor.de/images/reinhild/KATEGORIENAME/Dateiname.jpg&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei mehreren Bildern pro Rezept: erstes Bild (&amp;lt;code&amp;gt;_01.jpg&amp;lt;/code&amp;gt;) als Hauptbild verwenden.&lt;br /&gt;
&lt;br /&gt;
== Rezeptseiten-Format ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
== Rezeptname ==&lt;br /&gt;
[[Datei:Wiki Dateiname 01.jpg|thumb|450px|right|Rezeptname]]&lt;br /&gt;
[Portionen-Angabe falls vorhanden]&lt;br /&gt;
&lt;br /&gt;
=== Zutaten ===&lt;br /&gt;
* Zutat 1&lt;br /&gt;
* Zutat 2&lt;br /&gt;
&lt;br /&gt;
=== Zubereitung ===&lt;br /&gt;
1. Schritt 1&lt;br /&gt;
2. Schritt 2&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Reinhild &amp;amp; Lutz]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Casilor</name></author>
	</entry>
</feed>