<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://schwarzatal.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Bahnsteiganzeiger.js</id>
	<title>MediaWiki:Gadget-Bahnsteiganzeiger.js - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://schwarzatal.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Bahnsteiganzeiger.js"/>
	<link rel="alternate" type="text/html" href="https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;action=history"/>
	<updated>2026-07-10T21:20:30Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Schwarzatal.org</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=977&amp;oldid=prev</id>
		<title>Admin am 9. Juli 2026 um 18:20 Uhr</title>
		<link rel="alternate" type="text/html" href="https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=977&amp;oldid=prev"/>
		<updated>2026-07-09T18:20:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 9. Juli 2026, 20:20 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot;&gt;Zeile 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var PRODUCTS = &amp;#039;1111111111111&amp;#039;; // alle Verkehrsmittel inkl. Bus&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var PRODUCTS = &amp;#039;1111111111111&amp;#039;; // alle Verkehrsmittel inkl. Bus&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_ANZAHL = 40;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_ANZAHL = 40;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_HOEHE = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;800&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_HOEHE = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;808&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_INTERVALL = 60; // Sekunden&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_INTERVALL = 60; // Sekunden&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=976&amp;oldid=prev</id>
		<title>Admin am 9. Juli 2026 um 18:19 Uhr</title>
		<link rel="alternate" type="text/html" href="https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=976&amp;oldid=prev"/>
		<updated>2026-07-09T18:19:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 9. Juli 2026, 20:19 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot;&gt;Zeile 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var PRODUCTS = &amp;#039;1111111111111&amp;#039;; // alle Verkehrsmittel inkl. Bus&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var PRODUCTS = &amp;#039;1111111111111&amp;#039;; // alle Verkehrsmittel inkl. Bus&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_ANZAHL = 40;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_ANZAHL = 40;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_HOEHE = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1100&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_HOEHE = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;800&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_INTERVALL = 60; // Sekunden&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_INTERVALL = 60; // Sekunden&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=975&amp;oldid=prev</id>
		<title>Admin am 9. Juli 2026 um 18:18 Uhr</title>
		<link rel="alternate" type="text/html" href="https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=975&amp;oldid=prev"/>
		<updated>2026-07-09T18:18:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 9. Juli 2026, 20:18 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot;&gt;Zeile 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var PRODUCTS = &amp;#039;1111111111111&amp;#039;; // alle Verkehrsmittel inkl. Bus&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var PRODUCTS = &amp;#039;1111111111111&amp;#039;; // alle Verkehrsmittel inkl. Bus&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_ANZAHL = 40;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_ANZAHL = 40;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_HOEHE = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;600&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_HOEHE = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1100&lt;/ins&gt;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_INTERVALL = 60; // Sekunden&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	var STD_INTERVALL = 60; // Sekunden&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=967&amp;oldid=prev</id>
		<title>Admin am 9. Juli 2026 um 17:49 Uhr</title>
		<link rel="alternate" type="text/html" href="https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=967&amp;oldid=prev"/>
		<updated>2026-07-09T17:49:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;amp;diff=967&amp;amp;oldid=965&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=965&amp;oldid=prev</id>
		<title>Admin: Die Seite wurde neu angelegt: „/**  * Gadget-Bahnhof_anlegen.js  * ============================================================================  * Komfortables Anlegen von Bahnhofsseiten. Button erscheint nur auf der Seite  * &quot;Bahnhof anlegen&quot; und nur für angemeldete Nutzer.  *  * Erzeugt eine Seite &quot;Bahnhof &lt;Name&gt;&quot; mit:  *   - Breadcrumb + 🌐 Website  *   - WikiMap-Karte (aktiver Ort = Seitentitel, Filter &quot;Bahnhof&quot;)  *   - Standort-Zeilen (📍 Adresse, OSM, 🧭 Koordinaten, CoMap…“</title>
		<link rel="alternate" type="text/html" href="https://schwarzatal.org/index.php?title=MediaWiki:Gadget-Bahnsteiganzeiger.js&amp;diff=965&amp;oldid=prev"/>
		<updated>2026-07-09T17:47:26Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „/**  * Gadget-Bahnhof_anlegen.js  * ============================================================================  * Komfortables Anlegen von Bahnhofsseiten. Button erscheint nur auf der Seite  * &amp;quot;Bahnhof anlegen&amp;quot; und nur für angemeldete Nutzer.  *  * Erzeugt eine Seite &amp;quot;Bahnhof &amp;lt;Name&amp;gt;&amp;quot; mit:  *   - Breadcrumb + 🌐 Website  *   - WikiMap-Karte (aktiver Ort = Seitentitel, Filter &amp;quot;Bahnhof&amp;quot;)  *   - Standort-Zeilen (📍 Adresse, OSM, 🧭 Koordinaten, CoMap…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * Gadget-Bahnhof_anlegen.js&lt;br /&gt;
 * ============================================================================&lt;br /&gt;
 * Komfortables Anlegen von Bahnhofsseiten. Button erscheint nur auf der Seite&lt;br /&gt;
 * &amp;quot;Bahnhof anlegen&amp;quot; und nur für angemeldete Nutzer.&lt;br /&gt;
 *&lt;br /&gt;
 * Erzeugt eine Seite &amp;quot;Bahnhof &amp;lt;Name&amp;gt;&amp;quot; mit:&lt;br /&gt;
 *   - Breadcrumb + 🌐 Website&lt;br /&gt;
 *   - WikiMap-Karte (aktiver Ort = Seitentitel, Filter &amp;quot;Bahnhof&amp;quot;)&lt;br /&gt;
 *   - Standort-Zeilen (📍 Adresse, OSM, 🧭 Koordinaten, CoMaps, Google Maps)&lt;br /&gt;
 *     mit denselben Auto-Links aus Koordinaten wie das Eventform-Gadget&lt;br /&gt;
 *   - Abschnitt &amp;quot;Monitore&amp;quot; mit zwei Bahnsteiganzeigern (dep/arr) und je einem&lt;br /&gt;
 *     Link zur detaillierten ÖBB-Tafel&lt;br /&gt;
 *&lt;br /&gt;
 * Die evaId wird von Hand eingetragen ODER über eine Namenssuche gewählt&lt;br /&gt;
 * (ÖBB-Daten via v6.oebb.transport.rest – nur beim Anlegen, nicht im Betrieb).&lt;br /&gt;
 * Die WikiMap-Orte.json wird NICHT angefasst (pflegst du selbst).&lt;br /&gt;
 * ============================================================================&lt;br /&gt;
 */&lt;br /&gt;
( function () {&lt;br /&gt;
	&amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	// Button nur auf dieser Seite (wgPageName nutzt Unterstriche).&lt;br /&gt;
	if ( mw.config.get( &amp;#039;wgPageName&amp;#039; ) !== &amp;#039;Bahnhof_anlegen&amp;#039; ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if ( !mw.config.get( &amp;#039;wgUserName&amp;#039; ) ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function v( val ) {&lt;br /&gt;
		return ( val || &amp;#039;&amp;#039; ).trim();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ------------------------------------------------------------------ *&lt;br /&gt;
	 * Koordinaten-Parsing + Link-Bau – identisch zum Eventform-Gadget.&lt;br /&gt;
	 * ------------------------------------------------------------------ */&lt;br /&gt;
	function parseCoordinates( input ) {&lt;br /&gt;
		if ( !input ) {&lt;br /&gt;
			return null;&lt;br /&gt;
		}&lt;br /&gt;
		var s = input.trim();&lt;br /&gt;
		var m;&lt;br /&gt;
&lt;br /&gt;
		m = /^(-?\d+,\d+)\s*[;\s]\s*(-?\d+,\d+)$/.exec( s ) ||&lt;br /&gt;
			/^(-?\d+,\d+),\s+(-?\d+,\d+)$/.exec( s );&lt;br /&gt;
		if ( m ) {&lt;br /&gt;
			var latDE = parseFloat( m[ 1 ].replace( &amp;#039;,&amp;#039;, &amp;#039;.&amp;#039; ) );&lt;br /&gt;
			var lngDE = parseFloat( m[ 2 ].replace( &amp;#039;,&amp;#039;, &amp;#039;.&amp;#039; ) );&lt;br /&gt;
			if ( isFinite( latDE ) &amp;amp;&amp;amp; isFinite( lngDE ) &amp;amp;&amp;amp;&lt;br /&gt;
				Math.abs( latDE ) &amp;lt;= 90 &amp;amp;&amp;amp; Math.abs( lngDE ) &amp;lt;= 180 ) {&lt;br /&gt;
				return { lat: latDE, lng: lngDE };&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		m = /^(-?\d+(?:\.\d+)?)\s*[,;\s]\s*(-?\d+(?:\.\d+)?)$/.exec( s );&lt;br /&gt;
		if ( m ) {&lt;br /&gt;
			var lat = parseFloat( m[ 1 ] );&lt;br /&gt;
			var lng = parseFloat( m[ 2 ] );&lt;br /&gt;
			if ( isFinite( lat ) &amp;amp;&amp;amp; isFinite( lng ) &amp;amp;&amp;amp;&lt;br /&gt;
				Math.abs( lat ) &amp;lt;= 90 &amp;amp;&amp;amp; Math.abs( lng ) &amp;lt;= 180 ) {&lt;br /&gt;
				return { lat: lat, lng: lng };&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		m = /^(\d+(?:[.,]\d+)?)\s*°?\s*([NS])\s*[,;\s]?\s*(\d+(?:[.,]\d+)?)\s*°?\s*([EW])$/i.exec( s );&lt;br /&gt;
		if ( m ) {&lt;br /&gt;
			var lat2 = parseFloat( m[ 1 ].replace( &amp;#039;,&amp;#039;, &amp;#039;.&amp;#039; ) );&lt;br /&gt;
			if ( m[ 2 ].toUpperCase() === &amp;#039;S&amp;#039; ) { lat2 = -lat2; }&lt;br /&gt;
			var lng2 = parseFloat( m[ 3 ].replace( &amp;#039;,&amp;#039;, &amp;#039;.&amp;#039; ) );&lt;br /&gt;
			if ( m[ 4 ].toUpperCase() === &amp;#039;W&amp;#039; ) { lng2 = -lng2; }&lt;br /&gt;
			if ( isFinite( lat2 ) &amp;amp;&amp;amp; isFinite( lng2 ) &amp;amp;&amp;amp;&lt;br /&gt;
				Math.abs( lat2 ) &amp;lt;= 90 &amp;amp;&amp;amp; Math.abs( lng2 ) &amp;lt;= 180 ) {&lt;br /&gt;
				return { lat: lat2, lng: lng2 };&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		m = /^(\d+)\s*°\s*(\d+)\s*[&amp;#039;\u2019\u2032]\s*(\d+(?:[.,]\d+)?)\s*[&amp;quot;\u201D\u2033]\s*([NS])\s*[,;\s]?\s*(\d+)\s*°\s*(\d+)\s*[&amp;#039;\u2019\u2032]\s*(\d+(?:[.,]\d+)?)\s*[&amp;quot;\u201D\u2033]\s*([EW])$/i.exec( s );&lt;br /&gt;
		if ( m ) {&lt;br /&gt;
			var lat3 = parseInt( m[ 1 ], 10 ) + parseInt( m[ 2 ], 10 ) / 60 + parseFloat( m[ 3 ].replace( &amp;#039;,&amp;#039;, &amp;#039;.&amp;#039; ) ) / 3600;&lt;br /&gt;
			if ( m[ 4 ].toUpperCase() === &amp;#039;S&amp;#039; ) { lat3 = -lat3; }&lt;br /&gt;
			var lng3 = parseInt( m[ 5 ], 10 ) + parseInt( m[ 6 ], 10 ) / 60 + parseFloat( m[ 7 ].replace( &amp;#039;,&amp;#039;, &amp;#039;.&amp;#039; ) ) / 3600;&lt;br /&gt;
			if ( m[ 8 ].toUpperCase() === &amp;#039;W&amp;#039; ) { lng3 = -lng3; }&lt;br /&gt;
			if ( Math.abs( lat3 ) &amp;lt;= 90 &amp;amp;&amp;amp; Math.abs( lng3 ) &amp;lt;= 180 ) {&lt;br /&gt;
				return { lat: lat3, lng: lng3 };&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		m = /^(\d+)\s*°\s*(\d+(?:[.,]\d+)?)\s*[&amp;#039;\u2019\u2032]\s*([NS])\s*[,;\s]?\s*(\d+)\s*°\s*(\d+(?:[.,]\d+)?)\s*[&amp;#039;\u2019\u2032]\s*([EW])$/i.exec( s );&lt;br /&gt;
		if ( m ) {&lt;br /&gt;
			var lat4 = parseInt( m[ 1 ], 10 ) + parseFloat( m[ 2 ].replace( &amp;#039;,&amp;#039;, &amp;#039;.&amp;#039; ) ) / 60;&lt;br /&gt;
			if ( m[ 3 ].toUpperCase() === &amp;#039;S&amp;#039; ) { lat4 = -lat4; }&lt;br /&gt;
			var lng4 = parseInt( m[ 4 ], 10 ) + parseFloat( m[ 5 ].replace( &amp;#039;,&amp;#039;, &amp;#039;.&amp;#039; ) ) / 60;&lt;br /&gt;
			if ( m[ 6 ].toUpperCase() === &amp;#039;W&amp;#039; ) { lng4 = -lng4; }&lt;br /&gt;
			if ( Math.abs( lat4 ) &amp;lt;= 90 &amp;amp;&amp;amp; Math.abs( lng4 ) &amp;lt;= 180 ) {&lt;br /&gt;
				return { lat: lat4, lng: lng4 };&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return null;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function fmtCoord( n ) {&lt;br /&gt;
		return n.toFixed( 7 );&lt;br /&gt;
	}&lt;br /&gt;
	function buildOsmUrl( c ) {&lt;br /&gt;
		var lat = fmtCoord( c.lat ), lng = fmtCoord( c.lng );&lt;br /&gt;
		return &amp;#039;https://www.openstreetmap.org/?mlat=&amp;#039; + lat + &amp;#039;&amp;amp;mlon=&amp;#039; + lng + &amp;#039;#map=17/&amp;#039; + lat + &amp;#039;/&amp;#039; + lng;&lt;br /&gt;
	}&lt;br /&gt;
	function buildGoogleMapsUrl( c ) {&lt;br /&gt;
		return &amp;#039;https://www.google.com/maps?q=&amp;#039; + fmtCoord( c.lat ) + &amp;#039;,&amp;#039; + fmtCoord( c.lng );&lt;br /&gt;
	}&lt;br /&gt;
	function buildCoMapsUrl( c ) {&lt;br /&gt;
		// CoMaps/Organic Maps öffnen Koordinaten über das geo:-URI (RFC 5870).&lt;br /&gt;
		return &amp;#039;geo:&amp;#039; + fmtCoord( c.lat ) + &amp;#039;,&amp;#039; + fmtCoord( c.lng );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ------------------------------------------------------------------ *&lt;br /&gt;
	 * ÖBB-Detaillink (volle Tafel) – input + sqView, mit newrequest.&lt;br /&gt;
	 * ------------------------------------------------------------------ */&lt;br /&gt;
	function baueDetailUrl( eva, typ ) {&lt;br /&gt;
		var boardType = ( typ === &amp;#039;arr&amp;#039; ) ? &amp;#039;arr&amp;#039; : &amp;#039;dep&amp;#039;;&lt;br /&gt;
		var sqView = ( typ === &amp;#039;arr&amp;#039; ) ? &amp;#039;3&amp;#039; : &amp;#039;2&amp;#039;;&lt;br /&gt;
		return &amp;#039;https://fahrplan.oebb.at/bin/stboard.exe/dn?protocol=https:&amp;amp;input=&amp;#039; +&lt;br /&gt;
			encodeURIComponent( eva ) +&lt;br /&gt;
			&amp;#039;&amp;amp;boardType=&amp;#039; + boardType +&lt;br /&gt;
			&amp;#039;&amp;amp;sqView=&amp;#039; + sqView +&lt;br /&gt;
			&amp;#039;&amp;amp;productsFilter=1111111111111&amp;amp;maxJourneys=40&amp;amp;start=yes&amp;amp;newrequest=yes&amp;amp;&amp;#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ------------------------------------------------------------------ *&lt;br /&gt;
	 * Verkehrsmittel-Kürzel für die Trefferliste.&lt;br /&gt;
	 * ------------------------------------------------------------------ */&lt;br /&gt;
	function prods( p ) {&lt;br /&gt;
		if ( !p ) {&lt;br /&gt;
			return &amp;#039;&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
		var map = {&lt;br /&gt;
			nationalExpress: &amp;#039;RJ/EC&amp;#039;, national: &amp;#039;IC/D&amp;#039;, regionalExpress: &amp;#039;REX&amp;#039;,&lt;br /&gt;
			regional: &amp;#039;R/S&amp;#039;, suburban: &amp;#039;S-Bahn&amp;#039;, bus: &amp;#039;Bus&amp;#039;, tram: &amp;#039;Tram&amp;#039;,&lt;br /&gt;
			subway: &amp;#039;U&amp;#039;, ferry: &amp;#039;Fähre&amp;#039;&lt;br /&gt;
		};&lt;br /&gt;
		var out = [];&lt;br /&gt;
		Object.keys( map ).forEach( function ( k ) {&lt;br /&gt;
			if ( p[ k ] ) { out.push( map[ k ] ); }&lt;br /&gt;
		} );&lt;br /&gt;
		return out.length ? &amp;#039; – &amp;#039; + out.join( &amp;#039;, &amp;#039; ) : &amp;#039;&amp;#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ------------------------------------------------------------------ *&lt;br /&gt;
	 * Wikitext der Bahnhofsseite.&lt;br /&gt;
	 * ------------------------------------------------------------------ */&lt;br /&gt;
	function buildWikitext( f ) {&lt;br /&gt;
		var L = [];&lt;br /&gt;
		L.push( &amp;#039;[[Hauptseite]] &amp;gt; [[Hauptseite#Öffentlicher Verkehr|Öffentlicher Verkehr]] &amp;gt; [[Zug]] &amp;gt; [[Zug#Bahnhöfe|Bahnhöfe]]&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		if ( f.website ) {&lt;br /&gt;
			L.push( &amp;#039;🌐 &amp;#039; + f.website );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Karte: aktiver Ort = Seitentitel, nur Bahnhof-Pins.&lt;br /&gt;
		L.push( &amp;#039;&amp;lt;div class=&amp;quot;wikimap&amp;quot; data-aktiv-ort=&amp;quot;&amp;#039; + f.titel + &amp;#039;&amp;quot; data-filter=&amp;quot;Bahnhof&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; );&lt;br /&gt;
		L.push( &amp;#039;&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		// Standort-Zeilen – jede in eigenem Absatz (Leerzeile dazwischen).&lt;br /&gt;
		var first = true;&lt;br /&gt;
		function loc( line ) {&lt;br /&gt;
			if ( !first ) { L.push( &amp;#039;&amp;#039; ); }&lt;br /&gt;
			L.push( line );&lt;br /&gt;
			first = false;&lt;br /&gt;
		}&lt;br /&gt;
		if ( f.adresse ) { loc( &amp;#039;📍 &amp;#039; + f.adresse ); }&lt;br /&gt;
		if ( f.osmUrl ) { loc( &amp;#039;[[file:osm.png|24px|link=]] &amp;#039; + f.osmUrl ); }&lt;br /&gt;
		if ( f.koordinaten ) { loc( &amp;#039;🧭 &amp;#039; + f.koordinaten ); }&lt;br /&gt;
		if ( f.comapsUrl ) { loc( &amp;#039;[[file:CoMaps.png|24px|link=]] &amp;#039; + f.comapsUrl ); }&lt;br /&gt;
		if ( f.gmapsUrl ) { loc( &amp;#039;[[file:GoogleMaps.png|24px|link=]] &amp;#039; + f.gmapsUrl ); }&lt;br /&gt;
&lt;br /&gt;
		// Monitore (intern: Bahnsteiganzeiger).&lt;br /&gt;
		L.push( &amp;#039;== Monitore ==&amp;#039; );&lt;br /&gt;
		L.push( &amp;#039;&amp;lt;div class=&amp;quot;bahnsteiganzeiger&amp;quot; data-evaid=&amp;quot;&amp;#039; + f.evaId + &amp;#039;&amp;quot; data-typ=&amp;quot;dep&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; );&lt;br /&gt;
		L.push( &amp;#039;&amp;#039; );&lt;br /&gt;
		L.push( &amp;#039;[&amp;#039; + baueDetailUrl( f.evaId, &amp;#039;dep&amp;#039; ) + &amp;#039; Zur detaillierten Abfahrtstafel]&amp;#039; );&lt;br /&gt;
		L.push( &amp;#039;&amp;#039; );&lt;br /&gt;
		L.push( &amp;#039;&amp;lt;div class=&amp;quot;bahnsteiganzeiger&amp;quot; data-evaid=&amp;quot;&amp;#039; + f.evaId + &amp;#039;&amp;quot; data-typ=&amp;quot;arr&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; );&lt;br /&gt;
		L.push( &amp;#039;&amp;#039; );&lt;br /&gt;
		L.push( &amp;#039;[&amp;#039; + baueDetailUrl( f.evaId, &amp;#039;arr&amp;#039; ) + &amp;#039; Zur detaillierten Ankunftstafel]&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
		return L.join( &amp;#039;\n&amp;#039; );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* ------------------------------------------------------------------ *&lt;br /&gt;
	 * Oberfläche.&lt;br /&gt;
	 * ------------------------------------------------------------------ */&lt;br /&gt;
	mw.loader.using( [&lt;br /&gt;
		&amp;#039;oojs-ui-core&amp;#039;,&lt;br /&gt;
		&amp;#039;oojs-ui-windows&amp;#039;,&lt;br /&gt;
		&amp;#039;oojs-ui.styles.icons-interactions&amp;#039;,&lt;br /&gt;
		&amp;#039;oojs-ui.styles.icons-content&amp;#039;,&lt;br /&gt;
		&amp;#039;mediawiki.api&amp;#039;,&lt;br /&gt;
		&amp;#039;mediawiki.util&amp;#039;&lt;br /&gt;
	] ).then( function () {&lt;br /&gt;
&lt;br /&gt;
		function BahnhofDialog( config ) {&lt;br /&gt;
			BahnhofDialog.super.call( this, config );&lt;br /&gt;
		}&lt;br /&gt;
		OO.inheritClass( BahnhofDialog, OO.ui.ProcessDialog );&lt;br /&gt;
&lt;br /&gt;
		BahnhofDialog.static.name = &amp;#039;bahnhofDialog&amp;#039;;&lt;br /&gt;
		BahnhofDialog.static.title = &amp;#039;Neuen Bahnhof anlegen&amp;#039;;&lt;br /&gt;
		BahnhofDialog.static.actions = [&lt;br /&gt;
			{ action: &amp;#039;save&amp;#039;, label: &amp;#039;Seite anlegen&amp;#039;, flags: [ &amp;#039;primary&amp;#039;, &amp;#039;progressive&amp;#039; ] },&lt;br /&gt;
			{ label: &amp;#039;Abbrechen&amp;#039;, flags: &amp;#039;safe&amp;#039; }&lt;br /&gt;
		];&lt;br /&gt;
&lt;br /&gt;
		BahnhofDialog.prototype.initialize = function () {&lt;br /&gt;
			BahnhofDialog.super.prototype.initialize.apply( this, arguments );&lt;br /&gt;
			var dialog = this;&lt;br /&gt;
&lt;br /&gt;
			this.panel = new OO.ui.PanelLayout( { padded: true, expanded: false } );&lt;br /&gt;
&lt;br /&gt;
			this.nameInput = new OO.ui.TextInputWidget( { placeholder: &amp;#039;z.B. Pottschach&amp;#039;, required: true } );&lt;br /&gt;
&lt;br /&gt;
			this.sucheInput = new OO.ui.TextInputWidget( { placeholder: &amp;#039;Bahnhof suchen …&amp;#039; } );&lt;br /&gt;
			this.sucheButton = new OO.ui.ButtonWidget( { label: &amp;#039;Suchen&amp;#039;, icon: &amp;#039;search&amp;#039; } );&lt;br /&gt;
			this.sucheStatus = new OO.ui.LabelWidget( { label: &amp;#039;&amp;#039; } );&lt;br /&gt;
			this.sucheAuswahl = new OO.ui.RadioSelectWidget();&lt;br /&gt;
			this.sucheAuswahl.toggle( false );&lt;br /&gt;
&lt;br /&gt;
			this.evaidInput = new OO.ui.TextInputWidget( { placeholder: &amp;#039;z.B. 1131851&amp;#039;, required: true } );&lt;br /&gt;
			this.pruefButton = new OO.ui.ButtonWidget( { label: &amp;#039;Prüfen&amp;#039;, icon: &amp;#039;linkExternal&amp;#039; } );&lt;br /&gt;
&lt;br /&gt;
			this.websiteInput = new OO.ui.TextInputWidget( { placeholder: &amp;#039;https://bahnhof.oebb.at/…&amp;#039; } );&lt;br /&gt;
			this.adresseInput = new OO.ui.TextInputWidget( { placeholder: &amp;#039;2630 Pottschach, Putzmannsdorfer Straße 2&amp;#039; } );&lt;br /&gt;
			this.koordinatenInput = new OO.ui.TextInputWidget( { placeholder: &amp;#039;47.69694, 16.00583&amp;#039; } );&lt;br /&gt;
			this.osmUrlInput = new OO.ui.TextInputWidget( { placeholder: &amp;#039;https://www.openstreetmap.org/…&amp;#039; } );&lt;br /&gt;
			this.comapsUrlInput = new OO.ui.TextInputWidget( { placeholder: &amp;#039;https://comaps.at/…&amp;#039; } );&lt;br /&gt;
			this.gmapsUrlInput = new OO.ui.TextInputWidget( { placeholder: &amp;#039;https://maps.app.goo.gl/…&amp;#039; } );&lt;br /&gt;
&lt;br /&gt;
			// Suche auslösen&lt;br /&gt;
			this.sucheButton.on( &amp;#039;click&amp;#039;, function () { dialog.sucheStarten(); } );&lt;br /&gt;
			this.sucheInput.on( &amp;#039;enter&amp;#039;, function () { dialog.sucheStarten(); } );&lt;br /&gt;
&lt;br /&gt;
			// Treffer gewählt -&amp;gt; evaId (und ggf. Name) übernehmen&lt;br /&gt;
			this.sucheAuswahl.on( &amp;#039;choose&amp;#039;, function ( item ) {&lt;br /&gt;
				var d = item.getData();&lt;br /&gt;
				dialog.evaidInput.setValue( String( d.id ).replace( /^0+/, &amp;#039;&amp;#039; ) );&lt;br /&gt;
				if ( !v( dialog.nameInput.getValue() ) ) {&lt;br /&gt;
					dialog.nameInput.setValue( d.name );&lt;br /&gt;
				}&lt;br /&gt;
			} );&lt;br /&gt;
&lt;br /&gt;
			// evaId im Browser prüfen&lt;br /&gt;
			this.pruefButton.on( &amp;#039;click&amp;#039;, function () {&lt;br /&gt;
				var eva = v( dialog.evaidInput.getValue() ).replace( /^0+/, &amp;#039;&amp;#039; );&lt;br /&gt;
				if ( !eva ) { return; }&lt;br /&gt;
				window.open( baueDetailUrl( eva, &amp;#039;dep&amp;#039; ), &amp;#039;_blank&amp;#039;, &amp;#039;noopener&amp;#039; );&lt;br /&gt;
			} );&lt;br /&gt;
&lt;br /&gt;
			var fsPflicht = new OO.ui.FieldsetLayout( { label: &amp;#039;Bahnhof (Pflicht)&amp;#039; } );&lt;br /&gt;
			fsPflicht.addItems( [&lt;br /&gt;
				new OO.ui.FieldLayout( this.nameInput, {&lt;br /&gt;
					label: &amp;#039;Bahnhofsname&amp;#039;, align: &amp;#039;left&amp;#039;,&lt;br /&gt;
					help: &amp;#039;Wird zu „Bahnhof &amp;lt;Name&amp;gt;&amp;quot; – das ist Seitentitel UND Karten-ID (data-aktiv-ort). Der gleichnamige Eintrag muss in WikiMap-Orte.json existieren.&amp;#039;&lt;br /&gt;
				} ),&lt;br /&gt;
				new OO.ui.ActionFieldLayout( this.sucheInput, this.sucheButton, {&lt;br /&gt;
					label: &amp;#039;evaId suchen&amp;#039;, align: &amp;#039;top&amp;#039;,&lt;br /&gt;
					help: &amp;#039;Namen eingeben, suchen, den richtigen Treffer wählen – die evaId wird unten eingetragen. Bei mehreren Treffern: der Bahnhof, nicht die Bushaltestelle. Klappt die Suche nicht, evaId manuell eintragen.&amp;#039;&lt;br /&gt;
				} ),&lt;br /&gt;
				new OO.ui.FieldLayout( this.sucheStatus, { align: &amp;#039;top&amp;#039;, label: &amp;#039; &amp;#039; } ),&lt;br /&gt;
				new OO.ui.FieldLayout( this.sucheAuswahl, { align: &amp;#039;top&amp;#039;, label: &amp;#039; &amp;#039; } ),&lt;br /&gt;
				new OO.ui.ActionFieldLayout( this.evaidInput, this.pruefButton, {&lt;br /&gt;
					label: &amp;#039;evaId&amp;#039;, align: &amp;#039;left&amp;#039;,&lt;br /&gt;
					help: &amp;#039;Nur Ziffern, z.B. 1131851. „Prüfen&amp;quot; öffnet die ÖBB-Detailtafel dieser evaId in einem neuen Tab zur Kontrolle.&amp;#039;&lt;br /&gt;
				} )&lt;br /&gt;
			] );&lt;br /&gt;
&lt;br /&gt;
			var fsStandort = new OO.ui.FieldsetLayout( { label: &amp;#039;Standort (optional)&amp;#039; } );&lt;br /&gt;
			fsStandort.addItems( [&lt;br /&gt;
				new OO.ui.FieldLayout( this.websiteInput, {&lt;br /&gt;
					label: &amp;#039;🌐 Website&amp;#039;, align: &amp;#039;left&amp;#039;,&lt;br /&gt;
					help: &amp;#039;z.B. die ÖBB-Bahnhofsseite. Steht als erste Zeile oben; das Panorama kommt später von Hand darüber.&amp;#039;&lt;br /&gt;
				} ),&lt;br /&gt;
				new OO.ui.FieldLayout( this.adresseInput, { label: &amp;#039;📍 Adresse&amp;#039;, align: &amp;#039;left&amp;#039; } ),&lt;br /&gt;
				new OO.ui.FieldLayout( this.koordinatenInput, {&lt;br /&gt;
					label: &amp;#039;🧭 Koordinaten&amp;#039;, align: &amp;#039;left&amp;#039;,&lt;br /&gt;
					help: &amp;#039;Akzeptiert u.a.: 47.69694, 16.00583 · deutsches Komma-Format · 47°45\&amp;#039;00&amp;quot;N 15°40\&amp;#039;48&amp;quot;E. Wenn gesetzt, werden für leere OSM/CoMaps/Google-Maps-Felder automatisch Links erzeugt. (Der Karten-Pin kommt aus WikiMap-Orte.json, nicht von hier.)&amp;#039;&lt;br /&gt;
				} ),&lt;br /&gt;
				new OO.ui.FieldLayout( this.osmUrlInput, {&lt;br /&gt;
					label: &amp;#039;OpenStreetMap-URL&amp;#039;, align: &amp;#039;left&amp;#039;,&lt;br /&gt;
					help: &amp;#039;Leer lassen -&amp;gt; wird bei gegebenen Koordinaten automatisch erzeugt.&amp;#039;&lt;br /&gt;
				} ),&lt;br /&gt;
				new OO.ui.FieldLayout( this.comapsUrlInput, {&lt;br /&gt;
					label: &amp;#039;CoMaps-URL&amp;#039;, align: &amp;#039;left&amp;#039;,&lt;br /&gt;
					help: &amp;#039;Leer lassen -&amp;gt; wird bei gegebenen Koordinaten automatisch erzeugt.&amp;#039;&lt;br /&gt;
				} ),&lt;br /&gt;
				new OO.ui.FieldLayout( this.gmapsUrlInput, {&lt;br /&gt;
					label: &amp;#039;Google-Maps-URL&amp;#039;, align: &amp;#039;left&amp;#039;,&lt;br /&gt;
					help: &amp;#039;Leer lassen -&amp;gt; wird bei gegebenen Koordinaten automatisch erzeugt.&amp;#039;&lt;br /&gt;
				} )&lt;br /&gt;
			] );&lt;br /&gt;
&lt;br /&gt;
			this.panel.$element.append( fsPflicht.$element, fsStandort.$element );&lt;br /&gt;
			this.$body.append( this.panel.$element );&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// Stationssuche über transport.rest (nur beim Anlegen).&lt;br /&gt;
		BahnhofDialog.prototype.sucheStarten = function () {&lt;br /&gt;
			var dialog = this;&lt;br /&gt;
			var term = v( this.sucheInput.getValue() );&lt;br /&gt;
			this.sucheAuswahl.clearItems();&lt;br /&gt;
			this.sucheAuswahl.toggle( false );&lt;br /&gt;
			if ( !term ) {&lt;br /&gt;
				this.sucheStatus.setLabel( &amp;#039;Bitte einen Namen eingeben.&amp;#039; );&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			this.sucheStatus.setLabel( &amp;#039;Suche …&amp;#039; );&lt;br /&gt;
			var url = &amp;#039;https://v6.oebb.transport.rest/locations?query=&amp;#039; +&lt;br /&gt;
				encodeURIComponent( term ) + &amp;#039;&amp;amp;results=8&amp;amp;poi=false&amp;amp;addresses=false&amp;amp;stops=true&amp;#039;;&lt;br /&gt;
			fetch( url, { headers: { Accept: &amp;#039;application/json&amp;#039; } } )&lt;br /&gt;
				.then( function ( r ) {&lt;br /&gt;
					if ( !r.ok ) { throw new Error( &amp;#039;HTTP &amp;#039; + r.status ); }&lt;br /&gt;
					return r.json();&lt;br /&gt;
				} )&lt;br /&gt;
				.then( function ( list ) {&lt;br /&gt;
					var stops = ( list || [] ).filter( function ( x ) {&lt;br /&gt;
						return x &amp;amp;&amp;amp; ( x.type === &amp;#039;stop&amp;#039; || x.type === &amp;#039;station&amp;#039; ) &amp;amp;&amp;amp; x.id;&lt;br /&gt;
					} );&lt;br /&gt;
					if ( !stops.length ) {&lt;br /&gt;
						dialog.sucheStatus.setLabel( &amp;#039;Keine Station gefunden – evaId ggf. manuell eintragen.&amp;#039; );&lt;br /&gt;
						return;&lt;br /&gt;
					}&lt;br /&gt;
					var items = stops.map( function ( s ) {&lt;br /&gt;
						return new OO.ui.RadioOptionWidget( {&lt;br /&gt;
							data: { id: s.id, name: s.name },&lt;br /&gt;
							label: s.name + &amp;#039;  (evaId &amp;#039; + String( s.id ).replace( /^0+/, &amp;#039;&amp;#039; ) + &amp;#039;)&amp;#039; + prods( s.products )&lt;br /&gt;
						} );&lt;br /&gt;
					} );&lt;br /&gt;
					dialog.sucheAuswahl.addItems( items );&lt;br /&gt;
					dialog.sucheAuswahl.toggle( true );&lt;br /&gt;
					dialog.sucheStatus.setLabel( stops.length + &amp;#039; Treffer – den richtigen auswählen:&amp;#039; );&lt;br /&gt;
				} )&lt;br /&gt;
				.catch( function ( err ) {&lt;br /&gt;
					dialog.sucheStatus.setLabel( &amp;#039;Suche nicht möglich (&amp;#039; + err.message + &amp;#039;) – bitte evaId manuell eintragen.&amp;#039; );&lt;br /&gt;
				} );&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		BahnhofDialog.prototype.getActionProcess = function ( action ) {&lt;br /&gt;
			var dialog = this;&lt;br /&gt;
			function fehler( msg ) {&lt;br /&gt;
				return $.Deferred().reject( new OO.ui.Error( msg, { recoverable: true } ) ).promise();&lt;br /&gt;
			}&lt;br /&gt;
			if ( action === &amp;#039;save&amp;#039; ) {&lt;br /&gt;
				return new OO.ui.Process( function () {&lt;br /&gt;
					var name = v( dialog.nameInput.getValue() );&lt;br /&gt;
					var evaId = v( dialog.evaidInput.getValue() ).replace( /^0+/, &amp;#039;&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
					if ( !name ) {&lt;br /&gt;
						return fehler( &amp;#039;Bitte den Bahnhofsnamen ausfüllen.&amp;#039; );&lt;br /&gt;
					}&lt;br /&gt;
					if ( !/^\d+$/.test( evaId ) ) {&lt;br /&gt;
						return fehler( &amp;#039;Bitte eine gültige evaId (nur Ziffern) eintragen.&amp;#039; );&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					var titel = /^Bahnhof\s/i.test( name ) ? name : &amp;#039;Bahnhof &amp;#039; + name;&lt;br /&gt;
&lt;br /&gt;
					var fields = {&lt;br /&gt;
						titel: titel,&lt;br /&gt;
						evaId: evaId,&lt;br /&gt;
						website: v( dialog.websiteInput.getValue() ),&lt;br /&gt;
						adresse: v( dialog.adresseInput.getValue() ),&lt;br /&gt;
						koordinaten: v( dialog.koordinatenInput.getValue() ),&lt;br /&gt;
						osmUrl: v( dialog.osmUrlInput.getValue() ),&lt;br /&gt;
						comapsUrl: v( dialog.comapsUrlInput.getValue() ),&lt;br /&gt;
						gmapsUrl: v( dialog.gmapsUrlInput.getValue() )&lt;br /&gt;
					};&lt;br /&gt;
&lt;br /&gt;
					var coords = parseCoordinates( fields.koordinaten );&lt;br /&gt;
					if ( coords ) {&lt;br /&gt;
						if ( !fields.osmUrl ) { fields.osmUrl = buildOsmUrl( coords ); }&lt;br /&gt;
						if ( !fields.comapsUrl ) { fields.comapsUrl = buildCoMapsUrl( coords ); }&lt;br /&gt;
						if ( !fields.gmapsUrl ) { fields.gmapsUrl = buildGoogleMapsUrl( coords ); }&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
					var wikitext = buildWikitext( fields );&lt;br /&gt;
					var api = new mw.Api();&lt;br /&gt;
&lt;br /&gt;
					return api.get( {&lt;br /&gt;
						action: &amp;#039;query&amp;#039;, titles: titel, formatversion: 2&lt;br /&gt;
					} ).then( function ( data ) {&lt;br /&gt;
						var page = data.query.pages[ 0 ];&lt;br /&gt;
						if ( !page.missing ) {&lt;br /&gt;
							return fehler( &amp;#039;Eine Seite „&amp;#039; + titel + &amp;#039;&amp;quot; existiert bereits.&amp;#039; );&lt;br /&gt;
						}&lt;br /&gt;
						return api.postWithToken( &amp;#039;csrf&amp;#039;, {&lt;br /&gt;
							action: &amp;#039;edit&amp;#039;,&lt;br /&gt;
							title: titel,&lt;br /&gt;
							text: wikitext,&lt;br /&gt;
							createonly: true,&lt;br /&gt;
							summary: &amp;#039;Bahnhofsseite über Bahnhof-anlegen-Gadget angelegt&amp;#039;&lt;br /&gt;
						} );&lt;br /&gt;
					} ).then( function () {&lt;br /&gt;
						window.location.href = mw.util.getUrl( titel );&lt;br /&gt;
					}, function ( err ) {&lt;br /&gt;
						if ( err instanceof OO.ui.Error ) {&lt;br /&gt;
							return $.Deferred().reject( err ).promise();&lt;br /&gt;
						}&lt;br /&gt;
						return fehler( &amp;#039;Fehler beim Anlegen: &amp;#039; + ( err &amp;amp;&amp;amp; err.toString ? err.toString() : &amp;#039;unbekannt&amp;#039; ) );&lt;br /&gt;
					} );&lt;br /&gt;
				} );&lt;br /&gt;
			}&lt;br /&gt;
			return BahnhofDialog.super.prototype.getActionProcess.call( this, action );&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		BahnhofDialog.prototype.getBodyHeight = function () {&lt;br /&gt;
			return 640;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		var $container = $( &amp;#039;#bahnhof-form-container&amp;#039; );&lt;br /&gt;
		if ( !$container.length ) {&lt;br /&gt;
			$container = $( &amp;#039;&amp;lt;div id=&amp;quot;bahnhof-form-container&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; )&lt;br /&gt;
				.appendTo( &amp;#039;#mw-content-text .mw-parser-output&amp;#039; );&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var button = new OO.ui.ButtonWidget( {&lt;br /&gt;
			label: &amp;#039;Neuen Bahnhof anlegen&amp;#039;,&lt;br /&gt;
			flags: [ &amp;#039;primary&amp;#039;, &amp;#039;progressive&amp;#039; ],&lt;br /&gt;
			icon: &amp;#039;add&amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		var windowManager = new OO.ui.WindowManager();&lt;br /&gt;
		$( document.body ).append( windowManager.$element );&lt;br /&gt;
		var dialog = new BahnhofDialog( { size: &amp;#039;large&amp;#039; } );&lt;br /&gt;
		windowManager.addWindows( [ dialog ] );&lt;br /&gt;
&lt;br /&gt;
		button.on( &amp;#039;click&amp;#039;, function () {&lt;br /&gt;
			windowManager.openWindow( dialog );&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		$container.empty().append( button.$element );&lt;br /&gt;
&lt;br /&gt;
	} );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>