<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PCAdmin</id>
	<title>Amateur Theatre Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PCAdmin"/>
	<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php/Special:Contributions/PCAdmin"/>
	<updated>2026-07-25T07:02:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Laimer_Brett%27l&amp;diff=2041</id>
		<title>Laimer Brett&#039;l</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Laimer_Brett%27l&amp;diff=2041"/>
		<updated>2026-06-29T19:10:31Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Fix refs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AIGenerated}}&lt;br /&gt;
{{DynamicInfobox|qid=Q122798558}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Laimer Brett&#039;l&#039;&#039;&#039; (officially &#039;&#039;&#039;Laimer Brett&#039;l e.V.&#039;&#039;&#039;) is a [[wikipedia:Bavarian language|Bavarian]]-dialect amateur theatre group based in [[wikipedia:Munich|Munich]], Bavaria, Germany.&amp;lt;ref name=&amp;quot;site&amp;quot; /&amp;gt; Founded in 1993, it stages folk comedies in Bavarian dialect, typically two productions a year, and is counted among the city&#039;s amateur theatres.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;wp&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The association was founded in 1993, and its first staged piece was the one-act comedy &#039;&#039;Traumfrauen&#039;&#039; by Franz Schaurer in March of that year.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt; Since then the group has presented a continuous run of productions, usually one in spring (&#039;&#039;Frühjahr&#039;&#039;) and one in autumn (&#039;&#039;Herbst&#039;&#039;).&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt; Its spring 2019 production was titled &#039;&#039;25 Jahre Inge, Heinz und Onkel Kare&#039;&#039;, marking the group&#039;s twenty-fifth year.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt; In autumn 2018 the group did not perform because its playing space was unavailable during the renovation of the Wirtshaus am Hart.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repertoire ==&lt;br /&gt;
The group performs Bavarian-dialect comedies and folk plays (&#039;&#039;Volksstücke&#039;&#039;). Its programme draws on authors who write for the Bavarian amateur stage, among them Alfred Högerle, Franz Schaurer, Georg Maier and Gerhard Löw.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt; Recent productions include &#039;&#039;Rambazamba in der Seniorenresidenz&#039;&#039; (spring 2023), &#039;&#039;A so a Hex mei Oide&#039;&#039; (spring 2025), both by Alfred Högerle, and &#039;&#039;Eine verhängnisvolle Nacht&#039;&#039; by Armin Vollenweider, revived for spring 2026.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;spielplan&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
The group performs at the Wirtshaus am Hart in the [[wikipedia:Milbertshofen-Am Hart|Am Hart]] district in the north of Munich, at Sudetendeutsche Straße 40.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;venue&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organisation ==&lt;br /&gt;
Laimer Brett&#039;l is a registered association ([[wikipedia:Voluntary association#Germany|e.V.]]) and a member of the [[Verband Bayerischer Amateurtheater e. V.]]&amp;lt;ref name=&amp;quot;site&amp;quot; /&amp;gt; It has also run a children&#039;s theatre offshoot, Laimer Brettl Kindertheater, based in the [[wikipedia:Laim|Laim]] district of Munich.&amp;lt;ref name=&amp;quot;kinder&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://www.laimerbrettl.de/ Official website]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;site&amp;quot;&amp;gt;[https://www.laimerbrettl.de/ Laimer Brett&#039;l e.V.], official website, retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;chronik&amp;quot;&amp;gt;[https://www.laimerbrettl.de/chronik/ Chronik], Laimer Brett&#039;l e.V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;spielplan&amp;quot;&amp;gt;[https://www.laimerbrettl.de/spielplan/ Spielplan], Laimer Brett&#039;l e.V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;venue&amp;quot;&amp;gt;[https://www.muenchen-online.de/veranstaltungsorte/laimer-brettl-7836/ Laimer Brettl], München Online, retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;kinder&amp;quot;&amp;gt;[http://kindertheater.laimerbrettl.de/?page_id=2 Laimer Brettl Kindertheater], retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;wp&amp;quot;&amp;gt;[https://en.wikipedia.org/wiki/List_of_theatres_in_Munich List of theatres in Munich], Wikipedia, retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Laimer_Brett%27l&amp;diff=2040</id>
		<title>Laimer Brett&#039;l</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Laimer_Brett%27l&amp;diff=2040"/>
		<updated>2026-06-29T18:22:55Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Create&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AIGenerated}}{{DynamicInfobox|qid=Q122798558}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Laimer Brett&#039;l&#039;&#039;&#039; (officially &#039;&#039;&#039;Laimer Brett&#039;l e.V.&#039;&#039;&#039;) is a [[wikipedia:Bavarian language|Bavarian]]-dialect amateur theatre group based in [[wikipedia:Munich|Munich]], Bavaria, Germany.&amp;lt;ref name=&amp;quot;site&amp;quot;&amp;gt;[https://www.laimerbrettl.de/ Laimer Brett&#039;l e.V.], official website, retrieved 29 June 2026.&amp;lt;/ref&amp;gt; Founded in 1993, it stages [[wikipedia:Volksstück|folk comedies]] in Bavarian dialect, typically two productions a year, and is counted among the city&#039;s amateur theatres.&amp;lt;ref name=&amp;quot;chronik&amp;quot;&amp;gt;[https://www.laimerbrettl.de/chronik/ Chronik], Laimer Brett&#039;l e.V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wp&amp;quot;&amp;gt;[[wikipedia:List_of_theatres_in_Munich|List of theatres in Munich]], Wikipedia, retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The association was founded in 1993, and its first staged piece was the one-act comedy &#039;&#039;Traumfrauen&#039;&#039; by Franz Schaurer in March of that year.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt; Since then the group has presented a continuous run of productions, usually one in spring (&#039;&#039;Frühjahr&#039;&#039;) and one in autumn (&#039;&#039;Herbst&#039;&#039;).&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt; Its spring 2019 production was titled &#039;&#039;25 Jahre Inge, Heinz und Onkel Kare&#039;&#039;, marking the group&#039;s twenty-fifth year.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt; In autumn 2018 the group did not perform because its playing space was unavailable during the renovation of the Wirtshaus am Hart.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repertoire ==&lt;br /&gt;
The group performs Bavarian-dialect comedies and folk plays (&#039;&#039;Volksstücke&#039;&#039;). Its programme draws on authors who write for the Bavarian amateur stage, among them Alfred Högerle, Franz Schaurer, Georg Maier and Gerhard Löw.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt; Recent productions include &#039;&#039;Rambazamba in der Seniorenresidenz&#039;&#039; (spring 2023), &#039;&#039;A so a Hex mei Oide&#039;&#039; (spring 2025), both by Alfred Högerle, and &#039;&#039;Eine verhängnisvolle Nacht&#039;&#039; by Armin Vollenweider, revived for spring 2026.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;spielplan&amp;quot;&amp;gt;[https://www.laimerbrettl.de/spielplan/ Spielplan], Laimer Brett&#039;l e.V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
The group performs at the Wirtshaus am Hart in the [[wikipedia:Milbertshofen-Am Hart|Am Hart]] district in the north of Munich, at Sudetendeutsche Straße 40.&amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;venue&amp;quot;&amp;gt;[https://www.muenchen-online.de/veranstaltungsorte/laimer-brettl-7836/ Laimer Brettl], München Online, retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organisation ==&lt;br /&gt;
Laimer Brett&#039;l is a registered association ([[wikipedia:Voluntary association#Germany|e.V.]]) and a member of the [[Verband Bayerischer Amateurtheater e. V.]]&amp;lt;ref name=&amp;quot;site&amp;quot; /&amp;gt; It has also run a children&#039;s theatre offshoot, Laimer Brettl Kindertheater, based in the [[wikipedia:Laim|Laim]] district of Munich.&amp;lt;ref name=&amp;quot;kinder&amp;quot;&amp;gt;[http://kindertheater.laimerbrettl.de/?page_id=2 Laimer Brettl Kindertheater], retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.laimerbrettl.de/ Official website]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&amp;lt;ref name=&amp;quot;site&amp;quot; /&amp;gt; &amp;lt;ref name=&amp;quot;chronik&amp;quot; /&amp;gt; &amp;lt;ref name=&amp;quot;spielplan&amp;quot; /&amp;gt; &amp;lt;ref name=&amp;quot;venue&amp;quot; /&amp;gt; &amp;lt;ref name=&amp;quot;kinder&amp;quot; /&amp;gt; &amp;lt;ref name=&amp;quot;wp&amp;quot; /&amp;gt;&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Kulturfabrik_Berching&amp;diff=2039</id>
		<title>Kulturfabrik Berching</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Kulturfabrik_Berching&amp;diff=2039"/>
		<updated>2026-06-29T11:32:32Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Update links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AIGenerated}}&lt;br /&gt;
{{DynamicInfobox|qid=Q122798923}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Theatergruppe &amp;quot;Kulturfabrik Berching&amp;quot;&#039;&#039;&#039; is an [[wikipedia:Amateur theatre|amateur theatre]] group based in [[wikipedia:Berching|Berching]] in the [[wikipedia:Upper Palatinate|Upper Palatinate]], [[wikipedia:Bavaria|Bavaria]], Germany.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; It is the theatre activity of the Kulturförderkreis Berching e.&amp;amp;nbsp;V., a cultural [[wikipedia:Voluntary association#Germany|registered association]], and is a member of the [[Verband Bayerischer Amateurtheater e. V.]].&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;atbayern&amp;quot; /&amp;gt; Since 1994 the group has staged two self-produced productions each year.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The Kulturförderkreis Berching was founded on 6 July 1992 by 39 people with the aim of promoting cultural life in the town of Berching.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; From autumn 1993, volunteers converted a former factory building near the municipal sports ground into a performance venue, the Kulturfabrik, and the association began mounting its own theatre productions there.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; From 1994 onward the group presented two self-produced plays a year, alongside guest performances, classical concerts and cabaret. According to the Kulturförderkreis, the association had around 119 members and drew an annual audience of between 5,000 and 6,000.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; The venue was refurbished in January 2003.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The group&#039;s long-standing home changed in 2025. The city of Berching closed the ageing Kulturfabrik on safety grounds, leaving the ensemble without its venue during rehearsals for its winter production.&amp;lt;ref name=&amp;quot;nn-closure&amp;quot; /&amp;gt; The group then moved to the newly built Kulturhalle Christoph Willibald Gluck and relaunched its public identity under the name &amp;quot;Stadtbühne Berching&amp;quot;.&amp;lt;ref name=&amp;quot;site&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repertoire ==&lt;br /&gt;
The group stages both spoken plays and musicals. Productions have included the musical &#039;&#039;Wachgeküsst – Das Dornröschen Musical&#039;&#039; in 2019, with music by [[wikipedia:Konstantin Wecker|Konstantin Wecker]],&amp;lt;ref name=&amp;quot;atbayern-stueck&amp;quot; /&amp;gt; and a 2025 staging of [[wikipedia:Michael Ende|Michael Ende]]&#039;s &#039;&#039;Der satanarchäolügenialkohöllische Wunschpunsch&#039;&#039;, which premiered at the Kulturhalle in November 2025.&amp;lt;ref name=&amp;quot;nn-wunschpunsch&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
Until 2025 the group performed in the Kulturfabrik at Am Sportplatz in Berching, a former factory adapted for cultural use.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; Since 2025 its performances take place in the Kulturhalle Christoph Willibald Gluck, named after the composer [[wikipedia:Christoph Willibald Gluck|Christoph Willibald Gluck]], who was born nearby.&amp;lt;ref name=&amp;quot;site&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organisation ==&lt;br /&gt;
The theatre group operates within the Kulturförderkreis Berching e.&amp;amp;nbsp;V. and belongs to the [[Verband Bayerischer Amateurtheater e. V.]], the regional umbrella organisation for amateur theatre in Bavaria.&amp;lt;ref name=&amp;quot;atbayern&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.kulturfabrik-berching.de/ Official website]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;bbkult&amp;quot;&amp;gt;[https://www.bbkult.net/addresses/173299-kulturfabrik-berching/ Kulturfabrik Berching], bbkult.net, retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;site&amp;quot;&amp;gt;[https://www.kulturfabrik-berching.de/ Kultur in Berching], Kulturförderkreis Berching e.&amp;amp;nbsp;V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;atbayern&amp;quot;&amp;gt;[https://www.amateurtheater-bayern.de/index.php?modul=mitgliederlist Mitgliedsvereine], Verband Bayerischer Amateurtheater e.&amp;amp;nbsp;V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;atbayern-stueck&amp;quot;&amp;gt;[https://www.amateurtheater-bayern.de/index.php?modul=stueck_show&amp;amp;stueck_id=1671 Wachgeküsst – Das Dornröschen Musical], Verband Bayerischer Amateurtheater e.&amp;amp;nbsp;V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;nn-closure&amp;quot;&amp;gt;[https://www.nn.de/region/neumarkt/gefahr-fur-leib-und-leben-berching-schliesst-kulturfabrik-und-theaterverein-ist-heimatlos-1.14887602 Gefahr für Leib und Leben? Berching schließt Kulturfabrik und Theaterverein ist heimatlos], Nürnberger Nachrichten, 31 October 2025, retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;nn-wunschpunsch&amp;quot;&amp;gt;[https://www.nn.de/region/neumarkt/trotz-aus-in-der-kulturfabrik-theatergruppe-berching-verzaubert-mit-dem-wunschpunsch-1.14909498 Trotz Aus in der Kulturfabrik: Theatergruppe Berching verzaubert mit dem „Wunschpunsch“], Nürnberger Nachrichten, 20 November 2025, retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Kulturfabrik_Berching&amp;diff=2036</id>
		<title>Kulturfabrik Berching</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Kulturfabrik_Berching&amp;diff=2036"/>
		<updated>2026-06-29T10:43:44Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Create article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AIGenerated}}&lt;br /&gt;
{{DynamicInfobox|qid=Q122798923}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Theatergruppe &amp;quot;Kulturfabrik Berching&amp;quot;&#039;&#039;&#039; is an [[w:en:Amateur theatre|amateur theatre]] group based in [[w:en:Berching|Berching]] in the [[w:en:Upper Palatinate|Upper Palatinate]], [[w:en:Bavaria|Bavaria]], Germany.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; It is the theatre activity of the Kulturförderkreis Berching e.&amp;amp;nbsp;V., a cultural [[w:en:Voluntary association#Germany|registered association]], and is a member of the [[Verband Bayerischer Amateurtheater e. V.]].&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;atbayern&amp;quot; /&amp;gt; Since 1994 the group has staged two self-produced productions each year.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The Kulturförderkreis Berching was founded on 6 July 1992 by 39 people with the aim of promoting cultural life in the town of Berching.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; From autumn 1993, volunteers converted a former factory building near the municipal sports ground into a performance venue, the Kulturfabrik, and the association began mounting its own theatre productions there.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; From 1994 onward the group presented two self-produced plays a year, alongside guest performances, classical concerts and cabaret. According to the Kulturförderkreis, the association had around 119 members and drew an annual audience of between 5,000 and 6,000.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; The venue was refurbished in January 2003.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The group&#039;s long-standing home changed in 2025. The city of Berching closed the ageing Kulturfabrik on safety grounds, leaving the ensemble without its venue during rehearsals for its winter production.&amp;lt;ref name=&amp;quot;nn-closure&amp;quot; /&amp;gt; The group then moved to the newly built Kulturhalle Christoph Willibald Gluck and relaunched its public identity under the name &amp;quot;Stadtbühne Berching&amp;quot;.&amp;lt;ref name=&amp;quot;site&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repertoire ==&lt;br /&gt;
The group stages both spoken plays and musicals. Productions have included the musical &#039;&#039;Wachgeküsst – Das Dornröschen Musical&#039;&#039; in 2019, with music by [[w:en:Konstantin Wecker|Konstantin Wecker]],&amp;lt;ref name=&amp;quot;atbayern-stueck&amp;quot; /&amp;gt; and a 2025 staging of [[w:en:Michael Ende|Michael Ende]]&#039;s &#039;&#039;Der satanarchäolügenialkohöllische Wunschpunsch&#039;&#039;, which premiered at the Kulturhalle in November 2025.&amp;lt;ref name=&amp;quot;nn-wunschpunsch&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
Until 2025 the group performed in the Kulturfabrik at Am Sportplatz in Berching, a former factory adapted for cultural use.&amp;lt;ref name=&amp;quot;bbkult&amp;quot; /&amp;gt; Since 2025 its performances take place in the Kulturhalle Christoph Willibald Gluck, named after the composer [[w:en:Christoph Willibald Gluck|Christoph Willibald Gluck]], who was born nearby.&amp;lt;ref name=&amp;quot;site&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Organisation ==&lt;br /&gt;
The theatre group operates within the Kulturförderkreis Berching e.&amp;amp;nbsp;V. and belongs to the [[Verband Bayerischer Amateurtheater e. V.]], the regional umbrella organisation for amateur theatre in Bavaria.&amp;lt;ref name=&amp;quot;atbayern&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.kulturfabrik-berching.de/ Official website]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;bbkult&amp;quot;&amp;gt;[https://www.bbkult.net/addresses/173299-kulturfabrik-berching/ Kulturfabrik Berching], bbkult.net, retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;site&amp;quot;&amp;gt;[https://www.kulturfabrik-berching.de/ Kultur in Berching], Kulturförderkreis Berching e.&amp;amp;nbsp;V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;atbayern&amp;quot;&amp;gt;[https://www.amateurtheater-bayern.de/index.php?modul=mitgliederlist Mitgliedsvereine], Verband Bayerischer Amateurtheater e.&amp;amp;nbsp;V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;atbayern-stueck&amp;quot;&amp;gt;[https://www.amateurtheater-bayern.de/index.php?modul=stueck_show&amp;amp;stueck_id=1671 Wachgeküsst – Das Dornröschen Musical], Verband Bayerischer Amateurtheater e.&amp;amp;nbsp;V., retrieved 29 June 2026.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;nn-closure&amp;quot;&amp;gt;{{cite news |title=Gefahr für Leib und Leben? Berching schließt Kulturfabrik und Theaterverein ist heimatlos |work=Nürnberger Nachrichten |date=31 October 2025 |url=https://www.nn.de/region/neumarkt/gefahr-fur-leib-und-leben-berching-schliesst-kulturfabrik-und-theaterverein-ist-heimatlos-1.14887602 |access-date=29 June 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;nn-wunschpunsch&amp;quot;&amp;gt;{{cite news |title=Trotz Aus in der Kulturfabrik: Theatergruppe Berching verzaubert mit dem „Wunschpunsch“ |work=Nürnberger Nachrichten |date=20 November 2025 |url=https://www.nn.de/region/neumarkt/trotz-aus-in-der-kulturfabrik-theatergruppe-berching-verzaubert-mit-dem-wunschpunsch-1.14909498 |access-date=29 June 2026}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Tellspiele_Interlaken&amp;diff=2034</id>
		<title>Tellspiele Interlaken</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Tellspiele_Interlaken&amp;diff=2034"/>
		<updated>2026-06-28T11:07:21Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Add box&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q136784727}}The Tellspiele Interlaken (&#039;&#039;Engl.&#039;&#039; Tell Festival Interlaken), also referred to as Tell-Freilichtspiele Interlaken, is an open-air theatre that regularly stages [[wikipedia:William_Tell_(play)|Friedrich Schiller&#039;s drama &amp;quot;Wilhelm Tell&amp;quot;]] (&amp;quot;William Tell&amp;quot;) in the municipality of Matten near Interlaken in the Canton of Bern, Switzerland. The tradition started with the first production in 1912 and since 1947 there have been performances every year.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Tellspiele Interlaken: association (official website): https://www.tellspiele.ch/de/Verein&amp;lt;/ref&amp;gt; The ensemble consists of approximately 200 theatre amateurs, partly in speaking roles, partly acting as musicians, equestrians, or mutes. Animals like horses, goats or cows are also part of the performances.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;Baumann, Sara: Tell-Freilichtspiele Interlaken, Interlaken BE, in: Kotte, Andreas (Hg.): Theaterlexikon der Schweiz, Chronos Verlag Zürich 2005, Band 3, S. 1828–1829, mit Abbildung auf S. 1829. https://tls.theaterwissenschaft.ch/wiki/Tell-Freilichtspiele_Interlaken,_Interlaken_BE&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Schiller&#039;s play &amp;quot;Wilhelm Tell&amp;quot; about the freedom fighter of the same name deals with the foundation of the Old Swiss Confederacy. Though the storyline is highly fictive, the play contributed significantly to the founding myth and the Swiss self-conception of independence and upstanding. &lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
A local teacher in Matten near Interlaken, August Flückiger, initiated a performance of &amp;quot;Wilhelm Tell&amp;quot; by Friedrich Schiller with his pupils, cooperating with the &amp;quot;Dramatische Gesellschaft&amp;quot; (&#039;&#039;Engl.&#039;&#039; &amp;quot;Dramatic Society&amp;quot;) in Interlaken. The first performance took place in 1912.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In 1930, the Tellspielverein was established, an association that has been hosting the Tellspiele until today. From the beginning, the Tellspiele aimed to attract a wide audience and thereby expand tourism in the region. In addition, the association expected positive effects of the theatre activitites regarding education and morale of the volunteers.&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From 1947 on, the Tellspiele Interlaken have been performing every year, mostly during the summer months. &lt;br /&gt;
&lt;br /&gt;
== Recent developments ==&lt;br /&gt;
After more than 100 years, the Tellspiele Interlaken are still active. Due to the covid pandemic, there was a break in 2020 and 2021. A novelty took place in the season 2024: With a production of &amp;quot;Robin Hood&amp;quot;, the Tellspiele staged for the first time another play than &amp;quot;Wilhelm Tell&amp;quot;.&amp;lt;ref&amp;gt;Tellspiele Interlaken: Robin Hood (official website):https://www.tellspiele.ch/de/robin-hood&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
The Tell-Arena is situated at the outskirts of Matten and qualifies as the biggest landscape theatre in Switzerland. The scenery is the actual construction of a medieval village including a chapel and a defensive tower. The sheltered grand stand has space for 1500 spectators. Today the Tell-Arena is equipped with modern lighting engeneering and sound technology.&amp;lt;ref&amp;gt;Tellspiele Interlaken: site (official website): https://www.tellspiele.ch/de/Verein/Arealnutzung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Clubs, Societies and Institutions]]&lt;br /&gt;
[[Category:Switzerland]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:DynamicInfobox&amp;diff=2031</id>
		<title>Template:DynamicInfobox</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:DynamicInfobox&amp;diff=2031"/>
		<updated>2026-06-28T09:57:02Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Switch module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#invoke:DynamicCapiunto|main|qid={{{qid}}}}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is an example usage of this template with a sample Wikidata QID.&lt;br /&gt;
&lt;br /&gt;
{{DynamicInfobox|qid=Q120730912}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;params&amp;quot;: {&lt;br /&gt;
    &amp;quot;qid&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Wikidata QID&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Mandatory Wikidata QID to fetch all parameters dynamically from Wikidata.&amp;quot;,&lt;br /&gt;
      &amp;quot;required&amp;quot;: true&lt;br /&gt;
    },&amp;quot;official_name&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Name (P1448)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;logo&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Logo (P154)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Logo image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;image&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Image (P18)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;headquarters&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Headquarters (P159)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Headquarters.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;founding_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Founding Date (P571)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Founding date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;dissolution_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Dissolution Date (P576)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Dissolution date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;official_website&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Website (P856)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official website.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;country&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Country (P17)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Country.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_organization&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Parent Organization (P749)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Parent organization.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Coordinate Location (P625)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Coordinate location. Fetched from Wikidata and rendered as an OpenStreetMap (Leaflet) map via the Maps extension.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;Infobox for an organization. Fetches all parameters dynamically from Wikidata based on the mandatory QID.&amp;quot;,&lt;br /&gt;
  &amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:DynamicInfobox&amp;diff=2030</id>
		<title>Template:DynamicInfobox</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:DynamicInfobox&amp;diff=2030"/>
		<updated>2026-06-28T09:26:10Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: New parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#invoke:CapiuntoOrganization|main|qid={{{qid}}}}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is an example usage of this template with a sample Wikidata QID.&lt;br /&gt;
&lt;br /&gt;
{{DynamicInfobox|qid=Q120730912}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;params&amp;quot;: {&lt;br /&gt;
    &amp;quot;qid&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Wikidata QID&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Mandatory Wikidata QID to fetch all parameters dynamically from Wikidata.&amp;quot;,&lt;br /&gt;
      &amp;quot;required&amp;quot;: true&lt;br /&gt;
    },&amp;quot;official_name&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Name (P1448)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;logo&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Logo (P154)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Logo image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;image&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Image (P18)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;headquarters&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Headquarters (P159)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Headquarters.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;founding_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Founding Date (P571)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Founding date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;dissolution_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Dissolution Date (P576)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Dissolution date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;official_website&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Website (P856)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official website.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;country&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Country (P17)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Country.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_organization&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Parent Organization (P749)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Parent organization.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;coordinates&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Coordinate Location (P625)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Coordinate location. Fetched from Wikidata and rendered as an OpenStreetMap (Leaflet) map via the Maps extension.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;Infobox for an organization. Fetches all parameters dynamically from Wikidata based on the mandatory QID.&amp;quot;,&lt;br /&gt;
  &amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=2029</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=2029"/>
		<updated>2026-06-28T09:25:45Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Add map parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year then&lt;br /&gt;
                    local y = tonumber(year)&lt;br /&gt;
                    local m = tonumber(month) or 0&lt;br /&gt;
                    local d = tonumber(day) or 0&lt;br /&gt;
                    -- If month or day are zero/unknown, show only the year&lt;br /&gt;
                    if m == 0 or d == 0 then&lt;br /&gt;
                        return string.format(&#039;%04d&#039;, y)&lt;br /&gt;
                    end&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, y, m, d)&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                -- Register a parser cache dependency so the page is invalidated&lt;br /&gt;
                -- when UnlinkedWikibase populates or updates this entity&#039;s data.&lt;br /&gt;
                mw.ext.UnlinkedWikibase.getLocalTitle(value.id)&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get the first claim object for a property&lt;br /&gt;
    local function getFirstClaimObject(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
        return claims[1]&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get a qualifier value (prefer English monolingual text for P2096)&lt;br /&gt;
    local function getQualifierValue(claim, qualPid)&lt;br /&gt;
        if not claim or not claim.qualifiers or not claim.qualifiers[qualPid] then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        local qsnaks = claim.qualifiers[qualPid]&lt;br /&gt;
        if not qsnaks or #qsnaks == 0 then return nil end&lt;br /&gt;
        for i, q in ipairs(qsnaks) do&lt;br /&gt;
            -- Check for valid snak with datavalue&lt;br /&gt;
            if q and q.snaktype == &#039;value&#039; and q.datavalue and q.datavalue.value then&lt;br /&gt;
                local v = q.datavalue.value&lt;br /&gt;
                if type(v) == &#039;table&#039; then&lt;br /&gt;
                    -- For monolingual text, prefer English&lt;br /&gt;
                    if v.language and v.language == &#039;en&#039; and v.text then&lt;br /&gt;
                        return v.text&lt;br /&gt;
                    end&lt;br /&gt;
                else&lt;br /&gt;
                    return tostring(v)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add a Leaflet/OpenStreetMap map from the coordinate location (P625).&lt;br /&gt;
    -- Rendered via the Maps extension&#039;s #display_map parser function, which the&lt;br /&gt;
    -- wiki resolves when it parses this module&#039;s returned wikitext.&lt;br /&gt;
    local function addMap(box)&lt;br /&gt;
        local coord = getPropertyValue(&#039;P625&#039;)&lt;br /&gt;
        if type(coord) ~= &#039;table&#039; or not coord.latitude or not coord.longitude then&lt;br /&gt;
            return&lt;br /&gt;
        end&lt;br /&gt;
        box:addWikitext(string.format(&lt;br /&gt;
            &#039;{{#display_map:%s,%s|width=100%%|height=200|zoom=13|service=leaflet}}&#039;,&lt;br /&gt;
            tostring(coord.latitude), tostring(coord.longitude)))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
    local infobox&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
        local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
        if imageClaim then&lt;br /&gt;
            local imageVal = imageClaim.mainsnak and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue.value&lt;br /&gt;
            if imageVal then&lt;br /&gt;
                local imageStr = tostring(imageVal)&lt;br /&gt;
                local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
                if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;,&lt;br /&gt;
                                     caption)&lt;br /&gt;
                else&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        addMap(infobox)&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
    local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
    if imageClaim then&lt;br /&gt;
        local imageVal =&lt;br /&gt;
            imageClaim.mainsnak and imageClaim.mainsnak.datavalue and&lt;br /&gt;
                imageClaim.mainsnak.datavalue.value&lt;br /&gt;
        if imageVal then&lt;br /&gt;
            local imageStr = tostring(imageVal)&lt;br /&gt;
            local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
            if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;, caption)&lt;br /&gt;
            else&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;gt;[&#039; .. websiteStr ..&lt;br /&gt;
                    &#039; &#039; .. displayUrl .. &#039;]&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    addMap(infobox)&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=AITA_IATA&amp;diff=2027</id>
		<title>AITA IATA</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=AITA_IATA&amp;diff=2027"/>
		<updated>2026-06-09T09:43:22Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Add Infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{DynamicInfobox|qid=Q15627507}}The [https://www.aitaiata.net International Amateur Theatre Association (AITA/IATA)] is the global umbrella organization for amateur theatre, founded in 1952 in Brussels and now headquartered in London. It represents member organizations from about 80 countries across five continents, organized into National and Regional Centres, and is recognized by UNESCO as an NGO with consultative status. AITA/IATA co-organizes the Mondial du Théâtre world festival, held every four years with its World Congress. The German, Austrian, and Swiss national centres belong to the Central Europe Committee (CEC), which also includes countries beyond Central Europe, and co-hosts the World Festival of Children’s Theatre.&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Queen_Victoria&amp;diff=2014</id>
		<title>Queen Victoria</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Queen_Victoria&amp;diff=2014"/>
		<updated>2026-05-05T18:29:09Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Add Infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:DV307 no.41 - Queen Victoria and other Royals watching Fra Diavolo (opera) July 1857.png|thumb|Sketch of Queen Victoria and other members of the Royal Family watching the opera &#039;&#039;Fra Diavolo&#039;&#039; in July 1857. ]]&lt;br /&gt;
{{DynamicInfobox|qid=Q9439}}Queen Victoria (24 May 1819 – 22 January 1901) was a supporter of the arts. Until her husband&#039;s death in 1861 she had made numerous visits to the public theatres in London and had professional companies perform at royal properties. After 1861 she never returned to a performance at a public theatre, but she did host private theatricals. She hosted tableaux vivants performed by her family in various royal homes and towards the end of her reign invited professional companies to perform there once again. For example, on 16 September 1895 George Alexander&#039;s theatre company performed R. C Carton&#039;s &#039;&#039;Liberty Hall&#039;&#039; at Balmoral Castle in Scotland. Queen Victoria&#039;s support of public and private theatricals is often cited as crucial to the acceptability and development of amateur theatre in Britain during the nineteenth century.     &lt;br /&gt;
[[Category:Britain]]&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Le_th%C3%A9%C3%A2tre_de_la_marquise_de_Montesson&amp;diff=2013</id>
		<title>Le théâtre de la marquise de Montesson</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Le_th%C3%A9%C3%A2tre_de_la_marquise_de_Montesson&amp;diff=2013"/>
		<updated>2026-05-05T17:57:52Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Add infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q448927}}&lt;br /&gt;
&lt;br /&gt;
== The theatre of the marquise de Montesson ==&lt;br /&gt;
Charlotte-Jeanne Béraud de la Haye de Riou, Marquise de Montesson (1738-1806) ran a much popular and well-reputed theatre. Madame de Montesson was not only the director of the theatre, but wrote many of the plays herself and was known to be a talented actress and singer.&amp;lt;ref&amp;gt;David Trott, Théâtre du XVIIIe siècle : Jeux, écriture, regards (Montpellier, 2000) p.179-80, Marie-Emmanuelle Plagnol-Diéval, « Mise en scène de soi et du groupe. Les théàtres de société», &#039;&#039;Société Française d&#039;Étude du Dix-Huitième Siècle&#039;&#039;, « Dix-huitième siècle », 2017/1 n° 49, p. 89-101. &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In 1757, nineteen years old, she married the much older Jean Baptiste, Marquis of Montesson, who passed away in 1769.&amp;lt;ref&amp;gt;https://fr.wikipedia.org/wiki/Madame_de_Montesson#cite_note-Siefar-1 &amp;lt;/ref&amp;gt; Having been introduced to noble circles through her husband, she used her artistic skills (acting, singing, playing the harp etc.) to nurture these relations and climb on the social ladder.&amp;lt;ref&amp;gt;Marie-Emmanuelle Plagnol-Diéval, &#039;&#039;Le Théâtre de société : un autre théâtre&#039;&#039;. Paris, Champion, 2003, p.98-103&amp;lt;/ref&amp;gt; From 1766 she participates in the performances organised by the duc d’Orléans in his theatres in Bagnolet and Villers-Cotterêts, and starts writing her own plays.&amp;lt;ref&amp;gt;David Trott, &#039;&#039;Théâtre du XVIIIe siècle : Jeux, écriture, regards&#039;&#039; (Montpellier, 2000), p.179-80.&amp;lt;/ref&amp;gt; From 1773 she became the morganatic wife of the duc d’Orléans. She soon started to organise performances in her own private theatre at Chaussée d’Antin, while also entertaining a literary salon.&amp;lt;ref&amp;gt;Marie-Emmanuelle Plagnol-Diéval, &#039;&#039;Le Théâtre de société : un autre théâtre&#039;&#039;. Paris, Champion, 2003, p.98-103&amp;lt;/ref&amp;gt; Many of the works performed in her theatre 1776-1784 were her own plays; &#039;&#039;Marianne&#039;&#039;, &#039;&#039;L’Heureux Échange&#039;&#039;, &#039;&#039;Roberts Sciarts&#039;&#039;, &#039;&#039;L’Amant romanesque&#039;&#039;, &#039;&#039;La Marquise de Sainville&#039;&#039;, &#039;&#039;L’Aventurier&#039;&#039;, &#039;&#039;L’Héritier généreux&#039;&#039;, &#039;&#039;La Fausse Vertu&#039;&#039;, &#039;&#039;L’Homme impassible&#039;&#039;, &#039;&#039;La Comtesse de Bar&#039;&#039; and &#039;&#039;Agnès de Méranie&#039;&#039;, are performed regularly alongside some popular, contemporary works.&amp;lt;ref&amp;gt;Marie-Emmanuelle Plagnol-Diéval, ’Charlotte-Jeanne BÉRAUD DE LA HAIE DE RIOU, marquise DE MONTESSON’, &#039;&#039;Le Dictionnaire universel des Créatrices&#039;&#039; , &amp;lt;nowiki&amp;gt;https://www.dictionnaire-creatrices.com/fiche-charlotte-jeanne-montesson&amp;lt;/nowiki&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In 1785 she has a work performed on the public stage of the Comédie Française, &#039;&#039;La Comtesse de Chazelles&#039;&#039;, but it is not well received. Later the same year, the Duc d’Orlean dies and Madame de Montesson stops writing. During the Reign of Terror in 1793 she is imprisoned, and released after the fall of Robespierre in the following year. Thanks to her being friends with Joséphine de Beauharnais, she reopens her salon in 1801 with the support of Napoléon.&amp;lt;ref&amp;gt;’Madame de Montesson; Notice’, in &#039;&#039;Théâtre de femmes de l’Ancien Régime&#039;&#039;, vol IV, &#039;&#039;xviii&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; siècle&#039;&#039;, series eds; Evain (Aurore), Gethner (Perry), Goldwyn (Henriette), in collaboration for vol IV with eds. Kulessa (Rotraud von), Plagnol-Diéval (Marie-Emmanuelle), Simonin (Charlotte), Verdier (Gabrielle).&amp;lt;/ref&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[[Category:France]]&lt;br /&gt;
[[Category:People]]&lt;br /&gt;
[[Category:Clubs, Societies and Institutions]]&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://fr.wikipedia.org/wiki/Madame_de_Montesson#cite_note-Siefar-1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
’Madame de Montesson; Notice’, in &#039;&#039;Théâtre de femmes de l’Ancien Régime&#039;&#039;, vol IV, &#039;&#039;xviii&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; siècle&#039;&#039;, series eds; Evain (Aurore), Gethner (Perry), Goldwyn (Henriette), in collaboration for vol IV with eds. Kulessa (Rotraud von), Plagnol-Diéval (Marie-Emmanuelle), Simonin (Charlotte), Verdier (Gabrielle).&lt;br /&gt;
&lt;br /&gt;
Plagnol-Diéval, Marie-Emmanuelle, Charlotte-Jeanne BÉRAUD DE LA HAIE DE RIOU, marquise DE MONTESSON’, &#039;&#039;Le Dictionnaire universel des Créatrices&#039;&#039; , &amp;lt;nowiki&amp;gt;https://www.dictionnaire-creatrices.com/fiche-charlotte-jeanne-montesson&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Plagnol-Diéval, Marie-Emmanuelle, &#039;&#039;Le Théâtre de société : un autre théâtre&#039;&#039;. (Paris, 2003)&lt;br /&gt;
&lt;br /&gt;
Plagnol-Diéval, Marie-Emmanuelle, « Mise en scène de soi et du groupe. Les théàtres de société», &#039;&#039;Société Française d&#039;Étude du Dix-Huitième Siècle&#039;&#039;, « Dix-huitième siècle », 2017/1 n° 49, p. 89-101. &lt;br /&gt;
&lt;br /&gt;
Trott, David, &#039;&#039;Théâtre du XVIIIe siècle : Jeux, écriture, regards&#039;&#039; (Montpellier, 2000)&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Cecil_Crofton&amp;diff=2012</id>
		<title>Cecil Crofton</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Cecil_Crofton&amp;diff=2012"/>
		<updated>2026-05-05T17:57:10Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Reverted edit by PCAdmin (talk) to last revision by David Coates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox person&lt;br /&gt;
| name               = Cecil Crofton&lt;br /&gt;
| birth_name         = Frederick Martin&lt;br /&gt;
| birth_date         = 1859&lt;br /&gt;
| death_date         = 1935 age 76&lt;br /&gt;
| occupation         = actor, especially of comic roles&lt;br /&gt;
| years_active       = 1882-1896&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Cecil Crofton was the stage name of Frederick Martin (c.1859-1935). He had gained experience of acting on the amateur stage, including at Chatsworth House, in Derbyshire, England. His father, Gilson Martin, was the land agent for the Duke and Duchess of Devonshire for 27 years.&lt;br /&gt;
&lt;br /&gt;
Crofton began his stage career in 1882 in Wilson Barrett&#039;s Lights o&#039; London company at the Princess&#039;s Theatre. He toured as Charles II in &#039;&#039;Nell Gwynne;&#039;&#039; performed in &#039;&#039;The Countess and the Dancer&#039;&#039; and &#039;&#039;Camille&#039;&#039; at the Olympic Theatre in 1886; and in Cunningham Bridgman&#039;s &#039;&#039;Mischief&#039;&#039; at the Gaiety. In that same year he played the role of George Ralston in &#039;&#039;Jim the Penman&#039;&#039; which was then performed again at the Shaftesbury Theatre when it opened in 1889 and on tour in 1893. In 1891 he played Mr. Dobbinson in Our Regiment and in the same year was at Drury Lane as Spooner in &#039;&#039;Formosa&#039;&#039;. He also played in &#039;&#039;The Prince and the Pauper, Watching and Waiting,&#039;&#039; and &#039;&#039;The Custome House&#039;&#039; at the Vaudeville Theatre and &#039;&#039;Brighton&#039;&#039; at the Criterion Theatre. In 1894 he toured in The Late Lamented. He also performed in &#039;&#039;The Middleman&#039;&#039; as Epiphany Danks and &#039;&#039;The Professor&#039;s Love Story&#039;&#039; as Dr Yellowlees before his professional career came to an end.       &lt;br /&gt;
&lt;br /&gt;
Crofton died a bachelor at the age of 76. An obituary describes Crofton as having an &amp;quot;engaging personality&amp;quot; and there is various evidence to suggest that he may have been queer. &lt;br /&gt;
[[Category:People]]&lt;br /&gt;
[[Category:Britain]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Cecil_Crofton&amp;diff=2011</id>
		<title>Cecil Crofton</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Cecil_Crofton&amp;diff=2011"/>
		<updated>2026-05-05T17:56:42Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Add infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q448927}}&lt;br /&gt;
&lt;br /&gt;
Cecil Crofton was the stage name of Frederick Martin (c.1859-1935). He had gained experience of acting on the amateur stage, including at Chatsworth House, in Derbyshire, England. His father, Gilson Martin, was the land agent for the Duke and Duchess of Devonshire for 27 years.&lt;br /&gt;
&lt;br /&gt;
Crofton began his stage career in 1882 in Wilson Barrett&#039;s Lights o&#039; London company at the Princess&#039;s Theatre. He toured as Charles II in &#039;&#039;Nell Gwynne;&#039;&#039; performed in &#039;&#039;The Countess and the Dancer&#039;&#039; and &#039;&#039;Camille&#039;&#039; at the Olympic Theatre in 1886; and in Cunningham Bridgman&#039;s &#039;&#039;Mischief&#039;&#039; at the Gaiety. In that same year he played the role of George Ralston in &#039;&#039;Jim the Penman&#039;&#039; which was then performed again at the Shaftesbury Theatre when it opened in 1889 and on tour in 1893. In 1891 he played Mr. Dobbinson in Our Regiment and in the same year was at Drury Lane as Spooner in &#039;&#039;Formosa&#039;&#039;. He also played in &#039;&#039;The Prince and the Pauper, Watching and Waiting,&#039;&#039; and &#039;&#039;The Custome House&#039;&#039; at the Vaudeville Theatre and &#039;&#039;Brighton&#039;&#039; at the Criterion Theatre. In 1894 he toured in The Late Lamented. He also performed in &#039;&#039;The Middleman&#039;&#039; as Epiphany Danks and &#039;&#039;The Professor&#039;s Love Story&#039;&#039; as Dr Yellowlees before his professional career came to an end.       &lt;br /&gt;
&lt;br /&gt;
Crofton died a bachelor at the age of 76. An obituary describes Crofton as having an &amp;quot;engaging personality&amp;quot; and there is various evidence to suggest that he may have been queer. &lt;br /&gt;
[[Category:People]]&lt;br /&gt;
[[Category:Britain]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=F%C3%A9licit%C3%A9_de_Genlis&amp;diff=2010</id>
		<title>Félicité de Genlis</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=F%C3%A9licit%C3%A9_de_Genlis&amp;diff=2010"/>
		<updated>2026-05-05T17:53:08Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Add infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q55037230}}&lt;br /&gt;
[[File:Marie Victoire Lemoine - Portrait of Madame Genlis 281N10007 4FD4Q.jpg|thumb|Portrait of Madame de Genlis by Marie Victoire Lemoine (1781).]]Stéphanie Félicité du Crest de Saint-Aubin, comtesse de Genlis (1746-1830) is today mainly known for her writings on pedagogy and for her extensive memoires, giving posterity detailed insight into the social life of the aristocracy in the late eighteenth and early nineteenth century. However, at the time, Genlis also had a prominent role within the &#039;&#039;théâtre de société&#039;&#039;.&lt;br /&gt;
Genlis came from a family of the gentry, and was trained in singing, dancing, and playing the harp from an early age. She also acted within the &#039;&#039;théâtre de société&#039;&#039; as a child, and soon started to write her own comedies and dialogues.&amp;lt;ref&amp;gt;Marie-Emmanuelle Plagnol-Diéval, &#039;&#039;Madame de Genlis et le théâtre d&#039;éducation au XVIIIe siècle&#039;&#039;, (Oxford, 1997), p. 83-86. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ref&amp;gt; In 1763 she married the count Charles Alexis Brûlart de Genlis (1737-1793). She climbed the social ladder through her artistic talents, became popular within aristocratic circles and organised numerous performances and concerts.&amp;lt;ref&amp;gt;Marie-Emmanuelle Plagnol-Diéval, &#039;&#039;Le théâtre de société: un autre théâtre?&#039;&#039; (Paris, 2003), p. 35-36. &amp;lt;/ref&amp;gt;  In the late 1770s, she became &#039;&#039;gouverneur&#039;&#039; at court, responsible for the royal twin daughters, and from 1782 also of the education of the princes, including the future king Louis-Philippe.&amp;lt;ref&amp;gt;Gabriel De Broglie, &#039;&#039;Madame de Genlis&#039;&#039; (1985), p. 111-17.  &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genlis produced a large number of publications during her lifetime, including her collections of plays: &#039;&#039;Théâtre à l’usage des jeunes personnes,&#039;&#039; 4 volumes (1779/80), and &#039;&#039;Théâtre de société&#039;&#039;, 2 volumes (1781).&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
De Broglie, Gabriel, &#039;&#039;Madame de Genlis&#039;&#039; (1985), p. 111-17.  &lt;br /&gt;
&lt;br /&gt;
Plagnol-Diéval, Marie-Emmanuelle, &#039;&#039;Madame de Genlis et le théâtre d&#039;éducation au XVIIIe siècle&#039;&#039;, (Oxford, 1997), p. 83-86. &lt;br /&gt;
&lt;br /&gt;
Plagnol-Diéval, Marie-Emmanuelle, &#039;&#039;Le théâtre de société: un autre théâtre?&#039;&#039; (Paris, 2003), p. 35-36. &lt;br /&gt;
&lt;br /&gt;
[[Category:People]]&lt;br /&gt;
[[Category:France]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Charles_Colnaghi&amp;diff=2009</id>
		<title>Charles Colnaghi</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Charles_Colnaghi&amp;diff=2009"/>
		<updated>2026-05-05T17:48:27Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Add infobxo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q134486010}}&lt;br /&gt;
Charles Colnaghi ( - 1896) was an amateur actor who appeared in elite amateur performances in the late nineteenth century. He was an actor in the first theatricals inside [[Chatsworth House|Chatsworth House&#039;s]] theatre in 1895. &lt;br /&gt;
&lt;br /&gt;
Colnaghi is one of a number of amateur actors that theatre historian David Coates has identified as part of a queer network.&amp;lt;ref&amp;gt;David Coates, University of Warwick.&amp;lt;/ref&amp;gt;  Interestingly, he performed in the matinee of John Gray and Andre Raffalovich&#039;s &#039;&#039;The Blackmailers&#039;&#039; at the Prince of Wales Theatre on 7 June 1894 alongside professionals and other high profile amateurs. Laurence Senelick has identified this play as being the first to &#039;present a modern honoerotic relationship in a reasonably overt manner&#039;.&amp;lt;ref&amp;gt;Laurence Senelick, &#039;&#039;Lovesick: Modernist Plays of Same-Sex Love, 1894-1925&#039;&#039;, 1999, p17. &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Amateur performances in which Colnaghi appears:&lt;br /&gt;
&lt;br /&gt;
* 1887, 8 January - Wakehurst Place in &#039;&#039;Bombastes Furioso&#039;&#039;. &lt;br /&gt;
* 1891, 5 February - He appears in the Lyric Club&#039;s 96th concert which includes Sydney Grundy&#039;s &#039;&#039;In Honour Bound&#039;&#039; and a musical farce called &#039;&#039;On Lease&#039;&#039; composed for the occasion by Cotsford Dick. Colanghi appears in the latter. &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[[Category:Britain]]&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Olympe_de_Gouges&amp;diff=2008</id>
		<title>Olympe de Gouges</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Olympe_de_Gouges&amp;diff=2008"/>
		<updated>2026-05-05T17:43:22Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: add infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Marie-Olympe-de-Gouges.jpg|thumb|Portrait of Olympes de Gouges (1748-1793)]]&lt;br /&gt;
{{DynamicInfobox|qid=Q206972}}&lt;br /&gt;
Olympe de Gouges (1748-1793) was a butcher’s daughter who ended up under the guillotine due to her lifelong fight for the right to a public stage, both for theatre and politics. She wrote several political treatises in dialogue with the &#039;&#039;philosophes&#039;&#039;, openly fighting for the rights of women and against slave trade. De Gouges was in constant conflict with the Comédie Française which for many years systematically refused to perform her plays. For a short period in the 1780s (1786/1787), she had her own theatre troupe.&amp;lt;ref&amp;gt;Olivier Blanc, &#039;&#039;Marie-Olympe de Gouges&#039;&#039; (Paris, 2003)&amp;lt;/ref&amp;gt; In &#039;&#039;Le bonheur primitif de l’homme&#039;&#039; (1789) she argued for ‘a second theatre’ that she wished would be called ‘The national theatre, or, that of women’, in which the plays would be chosen by two committees: one consisting of men and one consisting of women.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:People]]&lt;br /&gt;
[[Category:France]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=2007</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=2007"/>
		<updated>2026-05-05T17:38:21Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Cache problem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year then&lt;br /&gt;
                    local y = tonumber(year)&lt;br /&gt;
                    local m = tonumber(month) or 0&lt;br /&gt;
                    local d = tonumber(day) or 0&lt;br /&gt;
                    -- If month or day are zero/unknown, show only the year&lt;br /&gt;
                    if m == 0 or d == 0 then&lt;br /&gt;
                        return string.format(&#039;%04d&#039;, y)&lt;br /&gt;
                    end&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, y, m, d)&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                -- Register a parser cache dependency so the page is invalidated&lt;br /&gt;
                -- when UnlinkedWikibase populates or updates this entity&#039;s data.&lt;br /&gt;
                mw.ext.UnlinkedWikibase.getLocalTitle(value.id)&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get the first claim object for a property&lt;br /&gt;
    local function getFirstClaimObject(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
        return claims[1]&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get a qualifier value (prefer English monolingual text for P2096)&lt;br /&gt;
    local function getQualifierValue(claim, qualPid)&lt;br /&gt;
        if not claim or not claim.qualifiers or not claim.qualifiers[qualPid] then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        local qsnaks = claim.qualifiers[qualPid]&lt;br /&gt;
        if not qsnaks or #qsnaks == 0 then return nil end&lt;br /&gt;
        for i, q in ipairs(qsnaks) do&lt;br /&gt;
            -- Check for valid snak with datavalue&lt;br /&gt;
            if q and q.snaktype == &#039;value&#039; and q.datavalue and q.datavalue.value then&lt;br /&gt;
                local v = q.datavalue.value&lt;br /&gt;
                if type(v) == &#039;table&#039; then&lt;br /&gt;
                    -- For monolingual text, prefer English&lt;br /&gt;
                    if v.language and v.language == &#039;en&#039; and v.text then&lt;br /&gt;
                        return v.text&lt;br /&gt;
                    end&lt;br /&gt;
                else&lt;br /&gt;
                    return tostring(v)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
    local infobox&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
        local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
        if imageClaim then&lt;br /&gt;
            local imageVal = imageClaim.mainsnak and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue.value&lt;br /&gt;
            if imageVal then&lt;br /&gt;
                local imageStr = tostring(imageVal)&lt;br /&gt;
                local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
                if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;,&lt;br /&gt;
                                     caption)&lt;br /&gt;
                else&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
    local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
    if imageClaim then&lt;br /&gt;
        local imageVal =&lt;br /&gt;
            imageClaim.mainsnak and imageClaim.mainsnak.datavalue and&lt;br /&gt;
                imageClaim.mainsnak.datavalue.value&lt;br /&gt;
        if imageVal then&lt;br /&gt;
            local imageStr = tostring(imageVal)&lt;br /&gt;
            local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
            if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;, caption)&lt;br /&gt;
            else&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;gt;[&#039; .. websiteStr ..&lt;br /&gt;
                    &#039; &#039; .. displayUrl .. &#039;]&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:DynamicInfobox&amp;diff=2006</id>
		<title>Template:DynamicInfobox</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:DynamicInfobox&amp;diff=2006"/>
		<updated>2026-05-05T13:58:01Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Update template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#invoke:DynamicCapiunto|main|qid={{{qid}}}}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is an example usage of this template with a sample Wikidata QID.&lt;br /&gt;
&lt;br /&gt;
{{DynamicInfobox|qid=Q120730912}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;params&amp;quot;: {&lt;br /&gt;
    &amp;quot;qid&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Wikidata QID&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Mandatory Wikidata QID to fetch all parameters dynamically from Wikidata.&amp;quot;,&lt;br /&gt;
      &amp;quot;required&amp;quot;: true&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;Infobox for the Amateur Theatre Wiki Fetches all parameters dynamically from Wikidata based on the mandatory QID.&amp;quot;,&lt;br /&gt;
  &amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Germaine_de_Sta%C3%ABl&amp;diff=2005</id>
		<title>Germaine de Staël</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Germaine_de_Sta%C3%ABl&amp;diff=2005"/>
		<updated>2026-05-05T13:30:37Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q123041}}&lt;br /&gt;
[https://sv.wikipedia.org/wiki/Germaine_de_Staël Germaine de Staël] (1766-1817) used her prominent position in the salons to question authority and create her own theatre. Her political and feminist writings caused her to be exiled for many years, and she soon became a forerunner of the emerging Romantic movement.&amp;lt;ref&amp;gt;Maria Fairweather, &#039;&#039;Madame de Staël&#039;&#039; (London, 2005); Carla Hesse, &#039;&#039;The Other Enlightenment&#039;&#039; (New Jersey, 2001); Machteld de Poortere, &#039;&#039;The Philosophical and Literary Ideas of Mme De Staël and of Mme De Genlis&#039;&#039;, (New York, 2007).&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
While in exile she surrounded herself with the intellectuals of Europe and created her own amateur theatre in Coppet, Switzerland, where some of her own plays where performed, often with de Staël herself on stage.&amp;lt;ref&amp;gt;Rougemont, Martine de &#039;Pour un répertoire des rôles et des représentations de Mme de Staël’, &#039;&#039;Cahiers Staëliens&#039;&#039;, no. 19, 1974, p. 79-92; Plagnol-Diéval, M-E, ‘Le Théâtre des familles de madame de Staël’, &#039;&#039;Cahiers Staëliens&#039;&#039;, no. 50, 1999, p. 45-65 ; Blandine Poirier, &#039;Le Théâtre de société de Germaine de Staël: une forme d’engagement ?&#039;, in &#039;&#039;Théâtre et société : Réseaux de sociabilité et représentations de la société&#039;&#039;, eds. Valentina Ponzetto and Jennifer Ruimi, p. 105-124. &amp;lt;/ref&amp;gt; &lt;br /&gt;
[[File:Germaine de Staël by Vladimir Borovikovsky.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Heiglhoftheater&amp;diff=1965</id>
		<title>Heiglhoftheater</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Heiglhoftheater&amp;diff=1965"/>
		<updated>2026-03-11T13:15:10Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: add red link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Originally founded by a student group in 2012, [https://www.heiglhoftheater.de Heiglhoftheater] is today open to all who have an interest in amateur performance. A core group of approximately ten people expands to larger groups for specific productions. They usually produce two shows per year. Every member can propose a theatre play for production and if they reach consent from the membership they will act as directors of their particular proposal. Rehearsals are twice a week. Parts of their tickets sales are donated to charitable causes.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
In 1995, fourteen students living in the student residence located at Heiglhofstraße, in the one of Munich&#039;s Southern suburbs (Großhadern) founded a theatre group. On 22 June 1995 they staged their first performance (&amp;quot;Loriots dramatische Werke&amp;quot;, &amp;quot;Loriot&#039;s Dramatic Works&amp;quot;) in the premises of the student residence. Until 2012 this was their usual theatre venue, today they perform in [[Pasinger Fabrik]] and [[Einstein Kulturforum]] two established stages for cabaret and smaller professional performances. &lt;br /&gt;
&lt;br /&gt;
== Repertoire ==&lt;br /&gt;
Their repertoire stretches from tragedy to boulevard comedy, from classics to modern popular play. Over the years they have performed the following plays.&lt;br /&gt;
&lt;br /&gt;
* Loriot: Loriot’s dramatische Werke, 1995&lt;br /&gt;
* Joseph Kesselring: Arsen und Spitzenhäubchen, 1996&lt;br /&gt;
* Michael Frayne: Der nachte Wahnsinn, 1996&lt;br /&gt;
* Eugène Ionesco: Die Nashörner, 1997&lt;br /&gt;
* Sir Peter Ustinov: Endspurt, 1997&lt;br /&gt;
* Michael Cooney: Und ewig rauschen die Gelder, 1998&lt;br /&gt;
* Kathrin Schrocke: Die Geschmacklosigkeiten, 1998&lt;br /&gt;
* Friedrich Dürrenmatt: Die Panne, 1998&lt;br /&gt;
* Agatha Christie: Zehn kleine Negerlein, 1998&lt;br /&gt;
* Patrick Süßkind: Der Kontrabass, 1999&lt;br /&gt;
* Jean-Paul Sartre: Geschlossene Gesellschaft, 1999&lt;br /&gt;
* Alan Aychbourn: Schöne Bescherung, 1999&lt;br /&gt;
* Terry Pratchett: Mort, 2000&lt;br /&gt;
* Peter Shaffer: Komödie im Dunkeln, 2000&lt;br /&gt;
* Ernst Lubisch: Sein oder Nichtsein, 2001&lt;br /&gt;
* Molière: Der Menschenfeind, 2002&lt;br /&gt;
* Fernando Arrabal: Picknick im Felde &amp;amp; Slawomir Mrozek Auf hoher See, 2003&lt;br /&gt;
* Doris Dörrie: Nackt, 2004&lt;br /&gt;
* Oscar Wilde: Bunbury, 2005&lt;br /&gt;
* William Shakespeare: Der Sturm, 2005&lt;br /&gt;
* Alan Ayckbourn: Schlafzimmergäste, 2006&lt;br /&gt;
* N. Richard Nash: Der Regenmacher, 2006&lt;br /&gt;
* Thomas Vinterberg and Mogens Rukov: Das Fest, 2007&lt;br /&gt;
* Ephraim Kishon: Der Trauschein, 2007&lt;br /&gt;
* Alan Ayckbourn: Einer für Alles, 2008&lt;br /&gt;
* Friedrich Dürrenmatt: Die Physiker, 2008&lt;br /&gt;
* Nina Mitrovic: Das Bett ist zu kurz, 2009&lt;br /&gt;
* C.B. Gilford: Porzellanfraktur, 2009&lt;br /&gt;
* Petr Zelenka: Schrottengel, 2010&lt;br /&gt;
* Agatha Christie: Das Urteil, 2010&lt;br /&gt;
* Woody Allen: Bullets over Broadway, 2011&lt;br /&gt;
* Tena Štivičić: Funkenflug, 2011&lt;br /&gt;
* Bertolt Brecht: Das Leben des Galilei, 2012&lt;br /&gt;
* Francis Verber: Dinner für Spinner, 2012&lt;br /&gt;
* Pavel Kohout: So eine Liebe, 2013&lt;br /&gt;
* Nikolai Gogol Die Heirat, 2014&lt;br /&gt;
* Ingrid Lausund: Zuhause, 2015&lt;br /&gt;
* Vinko Möderndorfer: Drei Schwestern, 2015&lt;br /&gt;
* Hansjörg Schertenleib: Radio Kashmir, 2016&lt;br /&gt;
* Manfred Brida: Herzlich Willkommen, 2016&lt;br /&gt;
* Carlo Goldoni: Der Krieg, 2017&lt;br /&gt;
* Alec Coppel: Der Pavillon, 2017&lt;br /&gt;
* Marius Leutenegger: Aperitif mit dem Teufel, 2018&lt;br /&gt;
* Jules Verne: 20.000 Meilen unter dem Meer, 2018&lt;br /&gt;
* Alan Ayckbourn: Konfusionen, 2019&lt;br /&gt;
* David Auburn: Der Beweis, 2019&lt;br /&gt;
* Woody Allen: Hannah und ihre Schwestern, 2020&lt;br /&gt;
* Mit Abstand … komisch. Sketche von Kishon, Polt u.a., 2020&lt;br /&gt;
* Ingrid Lausund: Bin Nebenan, 2021&lt;br /&gt;
* Pavel Kohout: Krieg im 3. Stock, 2022&lt;br /&gt;
* Jean-Paul Alègre: Bretter, die die Welt bedeuten, 2022&lt;br /&gt;
* Henrik Ibsen: Ein Volksfeind, 2023&lt;br /&gt;
* Bernhard Studlar: Lohn der Nacht, 2023&lt;br /&gt;
* Robert Thomas: Acht Frauen, 2024&lt;br /&gt;
* Woody Allen: Geliebte Aphrodite, 2024&lt;br /&gt;
* Roland Schimmelpfennig: Das Reich der Tiere, 2025&lt;br /&gt;
* Rebekka Kricheldorf: Das Waldhaus, 2025&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Heiglhoftheater&amp;diff=1964</id>
		<title>Heiglhoftheater</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Heiglhoftheater&amp;diff=1964"/>
		<updated>2026-03-11T13:14:30Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: /* History */ add red link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Originally founded by a student group in 2012, [https://www.heiglhoftheater.de Heiglhoftheater] is today open to all who have an interest in amateur performance. A core group of approximately ten people expands to larger groups for specific productions. They usually produce two shows per year. Every member can propose a theatre play for production and if they reach consent from the membership they will act as directors of their particular proposal. Rehearsals are twice a week. Parts of their tickets sales are donated to charitable causes.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
In 1995, fourteen students living in the student residence located at Heiglhofstraße, in the one of Munich&#039;s Southern suburbs (Großhadern) founded a theatre group. On 22 June 1995 they staged their first performance (&amp;quot;Loriots dramatische Werke&amp;quot;, &amp;quot;Loriot&#039;s Dramatic Works&amp;quot;) in the premises of the student residence. Until 2012 this was their usual theatre venue, today they perform in Pasinger Fabrik and [[Einstein Kulturforum]] two established stages for cabaret and smaller professional performances. &lt;br /&gt;
&lt;br /&gt;
== Repertoire ==&lt;br /&gt;
Their repertoire stretches from tragedy to boulevard comedy, from classics to modern popular play. Over the years they have performed the following plays.&lt;br /&gt;
&lt;br /&gt;
* Loriot: Loriot’s dramatische Werke, 1995&lt;br /&gt;
* Joseph Kesselring: Arsen und Spitzenhäubchen, 1996&lt;br /&gt;
* Michael Frayne: Der nachte Wahnsinn, 1996&lt;br /&gt;
* Eugène Ionesco: Die Nashörner, 1997&lt;br /&gt;
* Sir Peter Ustinov: Endspurt, 1997&lt;br /&gt;
* Michael Cooney: Und ewig rauschen die Gelder, 1998&lt;br /&gt;
* Kathrin Schrocke: Die Geschmacklosigkeiten, 1998&lt;br /&gt;
* Friedrich Dürrenmatt: Die Panne, 1998&lt;br /&gt;
* Agatha Christie: Zehn kleine Negerlein, 1998&lt;br /&gt;
* Patrick Süßkind: Der Kontrabass, 1999&lt;br /&gt;
* Jean-Paul Sartre: Geschlossene Gesellschaft, 1999&lt;br /&gt;
* Alan Aychbourn: Schöne Bescherung, 1999&lt;br /&gt;
* Terry Pratchett: Mort, 2000&lt;br /&gt;
* Peter Shaffer: Komödie im Dunkeln, 2000&lt;br /&gt;
* Ernst Lubisch: Sein oder Nichtsein, 2001&lt;br /&gt;
* Molière: Der Menschenfeind, 2002&lt;br /&gt;
* Fernando Arrabal: Picknick im Felde &amp;amp; Slawomir Mrozek Auf hoher See, 2003&lt;br /&gt;
* Doris Dörrie: Nackt, 2004&lt;br /&gt;
* Oscar Wilde: Bunbury, 2005&lt;br /&gt;
* William Shakespeare: Der Sturm, 2005&lt;br /&gt;
* Alan Ayckbourn: Schlafzimmergäste, 2006&lt;br /&gt;
* N. Richard Nash: Der Regenmacher, 2006&lt;br /&gt;
* Thomas Vinterberg and Mogens Rukov: Das Fest, 2007&lt;br /&gt;
* Ephraim Kishon: Der Trauschein, 2007&lt;br /&gt;
* Alan Ayckbourn: Einer für Alles, 2008&lt;br /&gt;
* Friedrich Dürrenmatt: Die Physiker, 2008&lt;br /&gt;
* Nina Mitrovic: Das Bett ist zu kurz, 2009&lt;br /&gt;
* C.B. Gilford: Porzellanfraktur, 2009&lt;br /&gt;
* Petr Zelenka: Schrottengel, 2010&lt;br /&gt;
* Agatha Christie: Das Urteil, 2010&lt;br /&gt;
* Woody Allen: Bullets over Broadway, 2011&lt;br /&gt;
* Tena Štivičić: Funkenflug, 2011&lt;br /&gt;
* Bertolt Brecht: Das Leben des Galilei, 2012&lt;br /&gt;
* Francis Verber: Dinner für Spinner, 2012&lt;br /&gt;
* Pavel Kohout: So eine Liebe, 2013&lt;br /&gt;
* Nikolai Gogol Die Heirat, 2014&lt;br /&gt;
* Ingrid Lausund: Zuhause, 2015&lt;br /&gt;
* Vinko Möderndorfer: Drei Schwestern, 2015&lt;br /&gt;
* Hansjörg Schertenleib: Radio Kashmir, 2016&lt;br /&gt;
* Manfred Brida: Herzlich Willkommen, 2016&lt;br /&gt;
* Carlo Goldoni: Der Krieg, 2017&lt;br /&gt;
* Alec Coppel: Der Pavillon, 2017&lt;br /&gt;
* Marius Leutenegger: Aperitif mit dem Teufel, 2018&lt;br /&gt;
* Jules Verne: 20.000 Meilen unter dem Meer, 2018&lt;br /&gt;
* Alan Ayckbourn: Konfusionen, 2019&lt;br /&gt;
* David Auburn: Der Beweis, 2019&lt;br /&gt;
* Woody Allen: Hannah und ihre Schwestern, 2020&lt;br /&gt;
* Mit Abstand … komisch. Sketche von Kishon, Polt u.a., 2020&lt;br /&gt;
* Ingrid Lausund: Bin Nebenan, 2021&lt;br /&gt;
* Pavel Kohout: Krieg im 3. Stock, 2022&lt;br /&gt;
* Jean-Paul Alègre: Bretter, die die Welt bedeuten, 2022&lt;br /&gt;
* Henrik Ibsen: Ein Volksfeind, 2023&lt;br /&gt;
* Bernhard Studlar: Lohn der Nacht, 2023&lt;br /&gt;
* Robert Thomas: Acht Frauen, 2024&lt;br /&gt;
* Woody Allen: Geliebte Aphrodite, 2024&lt;br /&gt;
* Roland Schimmelpfennig: Das Reich der Tiere, 2025&lt;br /&gt;
* Rebekka Kricheldorf: Das Waldhaus, 2025&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1877</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1877"/>
		<updated>2026-01-27T22:14:56Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: no fallback&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year then&lt;br /&gt;
                    local y = tonumber(year)&lt;br /&gt;
                    local m = tonumber(month) or 0&lt;br /&gt;
                    local d = tonumber(day) or 0&lt;br /&gt;
                    -- If month or day are zero/unknown, show only the year&lt;br /&gt;
                    if m == 0 or d == 0 then&lt;br /&gt;
                        return string.format(&#039;%04d&#039;, y)&lt;br /&gt;
                    end&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, y, m, d)&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get the first claim object for a property&lt;br /&gt;
    local function getFirstClaimObject(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
        return claims[1]&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get a qualifier value (prefer English monolingual text for P2096)&lt;br /&gt;
    local function getQualifierValue(claim, qualPid)&lt;br /&gt;
        if not claim or not claim.qualifiers or not claim.qualifiers[qualPid] then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        local qsnaks = claim.qualifiers[qualPid]&lt;br /&gt;
        if not qsnaks or #qsnaks == 0 then return nil end&lt;br /&gt;
        for i, q in ipairs(qsnaks) do&lt;br /&gt;
            -- Check for valid snak with datavalue&lt;br /&gt;
            if q and q.snaktype == &#039;value&#039; and q.datavalue and q.datavalue.value then&lt;br /&gt;
                local v = q.datavalue.value&lt;br /&gt;
                if type(v) == &#039;table&#039; then&lt;br /&gt;
                    -- For monolingual text, prefer English&lt;br /&gt;
                    if v.language and v.language == &#039;en&#039; and v.text then&lt;br /&gt;
                        return v.text&lt;br /&gt;
                    end&lt;br /&gt;
                else&lt;br /&gt;
                    return tostring(v)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
    local infobox&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
        local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
        if imageClaim then&lt;br /&gt;
            local imageVal = imageClaim.mainsnak and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue.value&lt;br /&gt;
            if imageVal then&lt;br /&gt;
                local imageStr = tostring(imageVal)&lt;br /&gt;
                local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
                if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;,&lt;br /&gt;
                                     caption)&lt;br /&gt;
                else&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
    local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
    if imageClaim then&lt;br /&gt;
        local imageVal =&lt;br /&gt;
            imageClaim.mainsnak and imageClaim.mainsnak.datavalue and&lt;br /&gt;
                imageClaim.mainsnak.datavalue.value&lt;br /&gt;
        if imageVal then&lt;br /&gt;
            local imageStr = tostring(imageVal)&lt;br /&gt;
            local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
            if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;, caption)&lt;br /&gt;
            else&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;gt;[&#039; .. websiteStr ..&lt;br /&gt;
                    &#039; &#039; .. displayUrl .. &#039;]&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1876</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1876"/>
		<updated>2026-01-27T22:11:44Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: test again&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year then&lt;br /&gt;
                    local y = tonumber(year)&lt;br /&gt;
                    local m = tonumber(month) or 0&lt;br /&gt;
                    local d = tonumber(day) or 0&lt;br /&gt;
                    -- If month or day are zero/unknown, show only the year&lt;br /&gt;
                    if m == 0 or d == 0 then&lt;br /&gt;
                        return string.format(&#039;%04d&#039;, y)&lt;br /&gt;
                    end&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, y, m, d)&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get the first claim object for a property&lt;br /&gt;
    local function getFirstClaimObject(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
        return claims[1]&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get a qualifier value (prefer English monolingual text for P2096)&lt;br /&gt;
    local function getQualifierValue(claim, qualPid)&lt;br /&gt;
        if not claim or not claim.qualifiers or not claim.qualifiers[qualPid] then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        local qsnaks = claim.qualifiers[qualPid]&lt;br /&gt;
        if not qsnaks or #qsnaks == 0 then return nil end&lt;br /&gt;
        for i, q in ipairs(qsnaks) do&lt;br /&gt;
            -- Check for valid snak with datavalue&lt;br /&gt;
            if q and q.snaktype == &#039;value&#039; and q.datavalue and q.datavalue.value then&lt;br /&gt;
                local v = q.datavalue.value&lt;br /&gt;
                if type(v) == &#039;table&#039; then&lt;br /&gt;
                    -- For monolingual text, prefer English&lt;br /&gt;
                    if v.language and v.language == &#039;en&#039; and v.text then&lt;br /&gt;
                        return v.text&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to any text value&lt;br /&gt;
                    if v.text then return v.text end&lt;br /&gt;
                else&lt;br /&gt;
                    return tostring(v)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
    local infobox&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
        local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
        if imageClaim then&lt;br /&gt;
            local imageVal = imageClaim.mainsnak and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue.value&lt;br /&gt;
            if imageVal then&lt;br /&gt;
                local imageStr = tostring(imageVal)&lt;br /&gt;
                local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
                if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;,&lt;br /&gt;
                                     caption)&lt;br /&gt;
                else&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
    local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
    if imageClaim then&lt;br /&gt;
        local imageVal =&lt;br /&gt;
            imageClaim.mainsnak and imageClaim.mainsnak.datavalue and&lt;br /&gt;
                imageClaim.mainsnak.datavalue.value&lt;br /&gt;
        if imageVal then&lt;br /&gt;
            local imageStr = tostring(imageVal)&lt;br /&gt;
            local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
            if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;, caption)&lt;br /&gt;
            else&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;gt;[&#039; .. websiteStr ..&lt;br /&gt;
                    &#039; &#039; .. displayUrl .. &#039;]&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1875</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1875"/>
		<updated>2026-01-27T22:06:48Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: second legend test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year then&lt;br /&gt;
                    local y = tonumber(year)&lt;br /&gt;
                    local m = tonumber(month) or 0&lt;br /&gt;
                    local d = tonumber(day) or 0&lt;br /&gt;
                    -- If month or day are zero/unknown, show only the year&lt;br /&gt;
                    if m == 0 or d == 0 then&lt;br /&gt;
                        return string.format(&#039;%04d&#039;, y)&lt;br /&gt;
                    end&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, y, m, d)&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get the first claim object for a property&lt;br /&gt;
    local function getFirstClaimObject(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
        return claims[1]&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get a qualifier value (prefer English monolingual text for P2096)&lt;br /&gt;
    local function getQualifierValue(claim, qualPid)&lt;br /&gt;
        if not claim or not claim.qualifiers or not claim.qualifiers[qualPid] then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        local qsnaks = claim.qualifiers[qualPid]&lt;br /&gt;
        if not qsnaks or #qsnaks == 0 then return nil end&lt;br /&gt;
        for i, q in ipairs(qsnaks) do&lt;br /&gt;
            if q and q.datavalue and q.datavalue.value then&lt;br /&gt;
                local v = q.datavalue.value&lt;br /&gt;
                if type(v) == &#039;table&#039; then&lt;br /&gt;
                    if v.language and v.language == &#039;en&#039; and v.text then&lt;br /&gt;
                        return v.text&lt;br /&gt;
                    end&lt;br /&gt;
                    if v.text then return v.text end&lt;br /&gt;
                else&lt;br /&gt;
                    return tostring(v)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
    local infobox&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
        local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
        if imageClaim then&lt;br /&gt;
            local imageVal = imageClaim.mainsnak and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue and&lt;br /&gt;
                                 imageClaim.mainsnak.datavalue.value&lt;br /&gt;
            if imageVal then&lt;br /&gt;
                local imageStr = tostring(imageVal)&lt;br /&gt;
                local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
                if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;,&lt;br /&gt;
                                     caption)&lt;br /&gt;
                else&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18) with media legend (P2096) as caption&lt;br /&gt;
    local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
    if imageClaim then&lt;br /&gt;
        local imageVal =&lt;br /&gt;
            imageClaim.mainsnak and imageClaim.mainsnak.datavalue and&lt;br /&gt;
                imageClaim.mainsnak.datavalue.value&lt;br /&gt;
        if imageVal then&lt;br /&gt;
            local imageStr = tostring(imageVal)&lt;br /&gt;
            local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
            if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;, caption)&lt;br /&gt;
            else&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;gt;[&#039; .. websiteStr ..&lt;br /&gt;
                    &#039; &#039; .. displayUrl .. &#039;]&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1874</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1874"/>
		<updated>2026-01-27T22:01:39Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: test image captions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year then&lt;br /&gt;
                    local y = tonumber(year)&lt;br /&gt;
                    local m = tonumber(month) or 0&lt;br /&gt;
                    local d = tonumber(day) or 0&lt;br /&gt;
                    -- If month or day are zero/unknown, show only the year&lt;br /&gt;
                    if m == 0 or d == 0 then&lt;br /&gt;
                        return string.format(&#039;%04d&#039;, y)&lt;br /&gt;
                    end&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, y, m, d)&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get the first claim object for a property&lt;br /&gt;
    local function getFirstClaimObject(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
        return claims[1]&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get the mainsnak datavalue from a claim object&lt;br /&gt;
    local function getClaimValue(claim)&lt;br /&gt;
        if not claim or not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get a qualifier value (prefer English monolingual text)&lt;br /&gt;
    local function getQualifierValue(claim, qualPid)&lt;br /&gt;
        if not claim or not claim.qualifiers or not claim.qualifiers[qualPid] then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        local qsnaks = claim.qualifiers[qualPid]&lt;br /&gt;
        if not qsnaks or #qsnaks == 0 then return nil end&lt;br /&gt;
        for i, q in ipairs(qsnaks) do&lt;br /&gt;
            if q and q.datavalue and q.datavalue.value then&lt;br /&gt;
                local v = q.datavalue.value&lt;br /&gt;
                if type(v) == &#039;table&#039; then&lt;br /&gt;
                    if v.language and v.language == &#039;en&#039; and v.text then&lt;br /&gt;
                        return v.text&lt;br /&gt;
                    end&lt;br /&gt;
                    if v.text then return v.text end&lt;br /&gt;
                else&lt;br /&gt;
                    return tostring(v)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
    local infobox&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18) with media legend (P2096) as caption when available&lt;br /&gt;
        local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
        if imageClaim then&lt;br /&gt;
            local imageVal = getClaimValue(imageClaim)&lt;br /&gt;
            if imageVal then&lt;br /&gt;
                local imageStr = tostring(imageVal)&lt;br /&gt;
                local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
                if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;,&lt;br /&gt;
                                     caption)&lt;br /&gt;
                else&lt;br /&gt;
                    infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18) with media legend (P2096) as caption when available&lt;br /&gt;
    local imageClaim = getFirstClaimObject(&#039;P18&#039;)&lt;br /&gt;
    if imageClaim then&lt;br /&gt;
        local imageVal = getClaimValue(imageClaim)&lt;br /&gt;
        if imageVal then&lt;br /&gt;
            local imageStr = tostring(imageVal)&lt;br /&gt;
            local caption = getQualifierValue(imageClaim, &#039;P2096&#039;)&lt;br /&gt;
            if caption and caption ~= &#039;&#039; then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;, caption)&lt;br /&gt;
            else&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;gt;[&#039; .. websiteStr ..&lt;br /&gt;
                    &#039; &#039; .. displayUrl .. &#039;]&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Arthur_Bourchier&amp;diff=1873</id>
		<title>Arthur Bourchier</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Arthur_Bourchier&amp;diff=1873"/>
		<updated>2026-01-27T21:57:24Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: fix infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q4798060}}&lt;br /&gt;
&lt;br /&gt;
Arthur Bourchier began performing in amateur theatricals at the University of Oxford. During that time he also performed in a variety of amateur theatrical events across Britain. He went on to become a professional actor and later an actor-manager.  &lt;br /&gt;
&lt;br /&gt;
Bourchier&#039;s career as an amateur included:&lt;br /&gt;
&lt;br /&gt;
1885, 28-30 January. Performing in [[Percy Florence Shelley]]&#039;s theatricals at [[Boscombe Manor]].  &lt;br /&gt;
[[Category:People]]&lt;br /&gt;
[[Category:Britain]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Verband_Bayerischer_Amateurtheater_e._V.&amp;diff=1872</id>
		<title>Verband Bayerischer Amateurtheater e. V.</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Verband_Bayerischer_Amateurtheater_e._V.&amp;diff=1872"/>
		<updated>2026-01-27T21:56:26Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Change infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q2513550}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verband Bayerischer Amateurtheater e.V. (VBAT)&#039;&#039;&#039; is an association representing Bavaria&#039;s amateur theater community. With approximately 700 member ensembles and over 60,000 volunteers, it stands as one of the largest state-level organizations for the performing arts in Germany. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
The association is organized into regional divisions: Oberbayern, Niederbayern, Oberpfalz, Franken, Schwaben, and a special division for &#039;&#039;Figurentheater&#039;&#039; (puppet theater). &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The Verband Bayerischer Amateurtheater e.V. was founded on October 21, 1923, in Augsburg. Originally named &#039;&#039;Bayerischer Verband Volksspielkunst – Kulturgemeinschaft für Volkskunst und Volksbildung – Verband bayerischer Theatervereine e.V.&#039;&#039;, the association initially aimed to foster folk art and community theater, encouraging appreciation for Bavaria’s cultural traditions. Over the years, VBAT expanded its mission and influence, evolving into a central advocacy organization for amateur theater across Bavaria. Today, it supports an impressive array of theater groups throughout the region, each contributing to the local arts scene. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?chronik=&amp;amp;modul=chronik&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mission and Objectives ==&lt;br /&gt;
VBAT&#039;s core mission is to advocate for Bavarian amateur theater within the cultural, artistic, political, and social spheres. By offering cultural engagement initiatives and educational programs, VBAT encourages collaboration across generations and addresses relevant social themes like integration, tolerance, and intergenerational dialogue. Additionally, the association is dedicated to preserving Bavarian theatrical heritage, dialects, and traditional expressions. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Activities and Programs ==&lt;br /&gt;
VBAT offers a variety of programs to enhance the quality and reach of amateur theater. It provides a statewide training initiative led by professional instructors, accessible to all member groups. The association also awards the &amp;quot;[[Larifari]],&amp;quot; a prestigious honor that celebrates achievements in Bavarian amateur theater. Additional member services include guidance on legal matters, assistance with GEMA/GVL licensing, and technical support for productions, among others. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Collaborations ==&lt;br /&gt;
VBAT is affiliated with organizations such as &#039;&#039;Bürgerallianz Bayern&#039;&#039;, &#039;&#039;Bayernbund&#039;&#039;, and &#039;&#039;Bayerischer Landesverein für Heimatpflege&#039;&#039;. It is also associated with the [[Bund Deutscher Amateurtheater (BDAT)|&#039;&#039;Bund Deutscher Amateurtheater e.V.&#039;&#039; (BDAT)]] and &#039;&#039;Union Internationale de la Marionnette&#039;&#039; (UNIMA) Germany, connecting VBAT to international networks like the &#039;&#039;[[International Amateur Theatre Association]]&#039;&#039; (IATA/AITA) and &#039;&#039;[[International Theatre Institute]]&#039;&#039; (ITI). &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Verband_Bayerischer_Amateurtheater_e._V.&amp;diff=1871</id>
		<title>Verband Bayerischer Amateurtheater e. V.</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Verband_Bayerischer_Amateurtheater_e._V.&amp;diff=1871"/>
		<updated>2026-01-27T20:46:57Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Organization|qid=Q2513550}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verband Bayerischer Amateurtheater e.V. (VBAT)&#039;&#039;&#039; is an association representing Bavaria&#039;s amateur theater community. With approximately 700 member ensembles and over 60,000 volunteers, it stands as one of the largest state-level organizations for the performing arts in Germany. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
The association is organized into regional divisions: Oberbayern, Niederbayern, Oberpfalz, Franken, Schwaben, and a special division for &#039;&#039;Figurentheater&#039;&#039; (puppet theater). &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The Verband Bayerischer Amateurtheater e.V. was founded on October 21, 1923, in Augsburg. Originally named &#039;&#039;Bayerischer Verband Volksspielkunst – Kulturgemeinschaft für Volkskunst und Volksbildung – Verband bayerischer Theatervereine e.V.&#039;&#039;, the association initially aimed to foster folk art and community theater, encouraging appreciation for Bavaria’s cultural traditions. Over the years, VBAT expanded its mission and influence, evolving into a central advocacy organization for amateur theater across Bavaria. Today, it supports an impressive array of theater groups throughout the region, each contributing to the local arts scene. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?chronik=&amp;amp;modul=chronik&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mission and Objectives ==&lt;br /&gt;
VBAT&#039;s core mission is to advocate for Bavarian amateur theater within the cultural, artistic, political, and social spheres. By offering cultural engagement initiatives and educational programs, VBAT encourages collaboration across generations and addresses relevant social themes like integration, tolerance, and intergenerational dialogue. Additionally, the association is dedicated to preserving Bavarian theatrical heritage, dialects, and traditional expressions. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Activities and Programs ==&lt;br /&gt;
VBAT offers a variety of programs to enhance the quality and reach of amateur theater. It provides a statewide training initiative led by professional instructors, accessible to all member groups. The association also awards the &amp;quot;[[Larifari]],&amp;quot; a prestigious honor that celebrates achievements in Bavarian amateur theater. Additional member services include guidance on legal matters, assistance with GEMA/GVL licensing, and technical support for productions, among others. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Collaborations ==&lt;br /&gt;
VBAT is affiliated with organizations such as &#039;&#039;Bürgerallianz Bayern&#039;&#039;, &#039;&#039;Bayernbund&#039;&#039;, and &#039;&#039;Bayerischer Landesverein für Heimatpflege&#039;&#039;. It is also associated with the [[Bund Deutscher Amateurtheater (BDAT)|&#039;&#039;Bund Deutscher Amateurtheater e.V.&#039;&#039; (BDAT)]] and &#039;&#039;Union Internationale de la Marionnette&#039;&#039; (UNIMA) Germany, connecting VBAT to international networks like the &#039;&#039;[[International Amateur Theatre Association]]&#039;&#039; (IATA/AITA) and &#039;&#039;[[International Theatre Institute]]&#039;&#039; (ITI). &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#invoke:GetMembers|getMembers|qid=Q2513550}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Verband_Bayerischer_Amateurtheater_e._V.&amp;diff=1870</id>
		<title>Verband Bayerischer Amateurtheater e. V.</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Verband_Bayerischer_Amateurtheater_e._V.&amp;diff=1870"/>
		<updated>2026-01-27T20:45:21Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Organization|qid=Q2513550}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verband Bayerischer Amateurtheater e.V. (VBAT)&#039;&#039;&#039; is an association representing Bavaria&#039;s amateur theater community. With approximately 700 member ensembles and over 60,000 volunteers, it stands as one of the largest state-level organizations for the performing arts in Germany. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
The association is organized into regional divisions: Oberbayern, Niederbayern, Oberpfalz, Franken, Schwaben, and a special division for &#039;&#039;Figurentheater&#039;&#039; (puppet theater). &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The Verband Bayerischer Amateurtheater e.V. was founded on October 21, 1923, in Augsburg. Originally named &#039;&#039;Bayerischer Verband Volksspielkunst – Kulturgemeinschaft für Volkskunst und Volksbildung – Verband bayerischer Theatervereine e.V.&#039;&#039;, the association initially aimed to foster folk art and community theater, encouraging appreciation for Bavaria’s cultural traditions. Over the years, VBAT expanded its mission and influence, evolving into a central advocacy organization for amateur theater across Bavaria. Today, it supports an impressive array of theater groups throughout the region, each contributing to the local arts scene. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?chronik=&amp;amp;modul=chronik&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mission and Objectives ==&lt;br /&gt;
VBAT&#039;s core mission is to advocate for Bavarian amateur theater within the cultural, artistic, political, and social spheres. By offering cultural engagement initiatives and educational programs, VBAT encourages collaboration across generations and addresses relevant social themes like integration, tolerance, and intergenerational dialogue. Additionally, the association is dedicated to preserving Bavarian theatrical heritage, dialects, and traditional expressions. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Activities and Programs ==&lt;br /&gt;
VBAT offers a variety of programs to enhance the quality and reach of amateur theater. It provides a statewide training initiative led by professional instructors, accessible to all member groups. The association also awards the &amp;quot;[[Larifari]],&amp;quot; a prestigious honor that celebrates achievements in Bavarian amateur theater. Additional member services include guidance on legal matters, assistance with GEMA/GVL licensing, and technical support for productions, among others. &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Collaborations ==&lt;br /&gt;
VBAT is affiliated with organizations such as &#039;&#039;Bürgerallianz Bayern&#039;&#039;, &#039;&#039;Bayernbund&#039;&#039;, and &#039;&#039;Bayerischer Landesverein für Heimatpflege&#039;&#039;. It is also associated with the [[Bund Deutscher Amateurtheater (BDAT)|&#039;&#039;Bund Deutscher Amateurtheater e.V.&#039;&#039; (BDAT)]] and &#039;&#039;Union Internationale de la Marionnette&#039;&#039; (UNIMA) Germany, connecting VBAT to international networks like the &#039;&#039;International Amateur Theatre Association&#039;&#039; (IATA/AITA) and &#039;&#039;International Theatre Institute&#039;&#039; (ITI). &amp;lt;ref&amp;gt;https://amateurtheater-bayern.de/index.php?menkey=leitbild&amp;amp;modul=content_show&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#invoke:GetMembers|getMembers|qid=Q2513550}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Herbert_Gardner&amp;diff=1869</id>
		<title>Herbert Gardner</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Herbert_Gardner&amp;diff=1869"/>
		<updated>2026-01-27T20:43:08Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Use infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q5734170}}&lt;br /&gt;
[[File:Herbert Gardner, Vanity Fair, 1886-04-07.jpg|thumb|Caricature of Herbert Gardner by Spy, published in &#039;&#039;Vanity Fair&#039;&#039; in 1886 with the caption &amp;quot;amateur theatricals&amp;quot;. ]]&lt;br /&gt;
&#039;&#039;&#039;Herbert Colstoun Gardner, 1st Baron Burghclere&#039;&#039;&#039; (9 June 1846 – 6 May 1921) was a British Liberal politician who sat in the House of Commons from 1885 until he was raised to the peerage in 1895. He went to the University of Cambridge where he was involved in the [[Cambridge Amateur Dramatic Club (A.D.C.)]] and later was a member of the Canterbury Old Stagers. His caricature by Spy, published in &#039;&#039;Vanity Fair&#039;&#039; in 1886, was captioned &amp;quot;amateur theatricals&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
He went on to write plays, including a three act comedy &#039;&#039;Time Will Tell&#039;&#039;. In January 1885 he performed the lead male role in his own play at Sir [[Percy Florence Shelley]]&#039;s private theatre at Boscombe Manor, which the playbill notes was &#039;produced under the personal supervision of the Author&#039;. This was alongside other well-known amateurs such as [[Carlotta Addison]], Arthur Bourchier, Captain Arthur Gooch, [[Augustus Spalding]], Claude Ponsonby, Cecil Clay and Sir Charles Young.  &lt;br /&gt;
[[Category:Britain]]&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1868</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1868"/>
		<updated>2026-01-27T20:39:45Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: fix date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year then&lt;br /&gt;
                    local y = tonumber(year)&lt;br /&gt;
                    local m = tonumber(month) or 0&lt;br /&gt;
                    local d = tonumber(day) or 0&lt;br /&gt;
                    -- If month or day are zero/unknown, show only the year&lt;br /&gt;
                    if m == 0 or d == 0 then&lt;br /&gt;
                        return string.format(&#039;%04d&#039;, y)&lt;br /&gt;
                    end&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, y, m, d)&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
    local infobox&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18)&lt;br /&gt;
        local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
        if image then&lt;br /&gt;
            local imageStr = formatValue(image)&lt;br /&gt;
            if imageStr then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18)&lt;br /&gt;
    local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
    if image then&lt;br /&gt;
        local imageStr = formatValue(image)&lt;br /&gt;
        if imageStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;gt;[&#039; .. websiteStr ..&lt;br /&gt;
                    &#039; &#039; .. displayUrl .. &#039;]&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1867</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1867"/>
		<updated>2026-01-27T20:37:47Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Test website location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year and month and day then&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, tonumber(year),&lt;br /&gt;
                                         tonumber(month), tonumber(day))&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
    local infobox&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18)&lt;br /&gt;
        local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
        if image then&lt;br /&gt;
            local imageStr = formatValue(image)&lt;br /&gt;
            if imageStr then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18)&lt;br /&gt;
    local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
    if image then&lt;br /&gt;
        local imageStr = formatValue(image)&lt;br /&gt;
        if imageStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;gt;[&#039; .. websiteStr ..&lt;br /&gt;
                    &#039; &#039; .. displayUrl .. &#039;]&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1866</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1866"/>
		<updated>2026-01-27T20:34:21Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Fix for orgs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year and month and day then&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, tonumber(year),&lt;br /&gt;
                                         tonumber(month), tonumber(day))&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
    local infobox&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18)&lt;br /&gt;
        local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
        if image then&lt;br /&gt;
            local imageStr = formatValue(image)&lt;br /&gt;
            if imageStr then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18)&lt;br /&gt;
    local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
    if image then&lt;br /&gt;
        local imageStr = formatValue(image)&lt;br /&gt;
        if imageStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;{| style=&amp;quot;width:100%; text-align:center;&amp;quot;\n|-\n| [&#039; ..&lt;br /&gt;
                    websiteStr .. &#039; &#039; .. displayUrl .. &#039;]\n|}&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Theatergesellschaft_Bad_Endorf&amp;diff=1865</id>
		<title>Theatergesellschaft Bad Endorf</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Theatergesellschaft_Bad_Endorf&amp;diff=1865"/>
		<updated>2026-01-27T20:32:32Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Use new infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q120730912}}&lt;br /&gt;
&lt;br /&gt;
The [https://www.theater-endorf.de Theatergesellschaft Bad Endorf e.V.] is an amateur theatre that started performing in 1790 and hence counts as the third oldest theatre in Bavaria. It has a specialization in religious drama and performs every year from Pentecoast on for ca. 5 weeks, hosting up to 5000 spectators during a season. The theatre society is located on Rosenheimer Straße 6, Bad Endorf. Performances normally last several hours and involve large casts of ca. 60 actors. All set designs and costumes are produced by the members. The Bavarian State Ministery of Education and Culture mentioned the amateur theatre valuable in regard to popular education and artistic practice.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
In a time period at the end of eighteenth century when in Bavaria the church and state authorities largely repressed religious and passion play, theatre amateurs in the village of Bad Endorf/Teisenheim performed in 1790 the religious play „Thraurige Vorstellung dess Erschrecklichen Jingsten Gerichts“ („Saddening Representation of the Horrible Last Judgement“).&amp;lt;ref&amp;gt;A thorough analysis and discussion of the play as performed in Bad Endorf is found in Edgar Harvolk, &#039;&#039;Das Endorser Volksschauspiel&#039;&#039;, Rosenheim 1974, ch. II &amp;quot;Das Endorfer Jüngst-Gericht-Spiel&amp;quot;, 24-86.&amp;lt;/ref&amp;gt; The play was loosely inspired by the themes of &amp;quot;Everyman&amp;quot; presenting the horrible consequences of falling to the temptations of evil. The cast consisted of 27 people in addition to a large number of extras for the group of &amp;quot;the righteous&amp;quot; and &amp;quot;the godless&amp;quot; in the grande finale.&amp;lt;ref&amp;gt;Harvolk, &#039;&#039;Das Endorfer Volksschauspiel&#039;&#039;, 51.&amp;lt;/ref&amp;gt; After this first outdoor performance the pheasant theatre (Bauerntheater) continued to stage religious plays, historic knight and robber plays (&amp;quot;Ritter- und Räuberstücke&amp;quot;) in diverse local locations (local inns, yards etc.). The ambition to follow the Oberammergau example and engage in passion play from 1817 on was continually blocked by the church authorities that did not deem the pheasants worth staging the passion of Christ.&amp;lt;ref&amp;gt;Edgar Harvolk, &#039;&#039;Die Endorfer Volksschauspiele seit 1790&#039;&#039;, Munich 1990, 5-6.&amp;lt;/ref&amp;gt; In 1866 a group of 12 village people (pheasants, inn keepers, merchants) initiated a formal theatre association (&amp;quot;Theatergesellschaft Bad Endorf&amp;quot;) and raised money to start building their own theatre. One of their success performances was the religious play of &amp;quot;The Egyptian Joseph&amp;quot; (&amp;quot;Der ägyptische Joseph&amp;quot;) that included music performance and the staging of tableaux vivants &amp;quot;in the style of the passion plays in Oberammergau&amp;quot;&amp;lt;ref&amp;gt;Subtitle on a theatre bill from 1884, quoted in Harvolk, &#039;&#039;Die Endorser Volksschauspiele&#039;&#039;, 8.&amp;lt;/ref&amp;gt;. In 1958 the theatre was remodelled and hosts now up to 534 spectators. Since the end oft he 1960s the amateur theatre also performed comedies and farces. In 1991 it received the Kulturpreis (cultural prize) from the county of Rosenheim.&lt;br /&gt;
&lt;br /&gt;
== Members ==&lt;br /&gt;
&lt;br /&gt;
* Paula Aiblinger&lt;br /&gt;
* Konrad Schlaipfer&lt;br /&gt;
* Annemarie Ramoser&lt;br /&gt;
* Julia Hofmann&lt;br /&gt;
* Werner Hofmann&lt;br /&gt;
* Barbara Bichler&lt;br /&gt;
* Andrea Krug&lt;br /&gt;
* Katharina Plank&lt;br /&gt;
* Martina Seehuber-Liegl&lt;br /&gt;
* Marlene Dickl&lt;br /&gt;
* Emmeram Aiblinger&lt;br /&gt;
* Josef Mayer&lt;br /&gt;
* Markus Mädler&lt;br /&gt;
* Flo Schauer&lt;br /&gt;
* Kathi Plank&lt;br /&gt;
&lt;br /&gt;
== Repertoire ==&lt;br /&gt;
They regularly performed plays by the following authors:&lt;br /&gt;
&lt;br /&gt;
* 1949-1955 Christian Mayrl; former clockmaker from Eggstätt (7 plays)&lt;br /&gt;
* 1976-1995 Hubert Bomba from Bad Endorf (13 plays)&lt;br /&gt;
* 2000 Margarethe Janssen from Waldkraiburg (1 play)&lt;br /&gt;
* 2007, 2010, 2012 &amp;amp; 2014 Horst Rankl from Rosenheim (4 plays)&lt;br /&gt;
&lt;br /&gt;
Religious play performed between 1945 and 1990:&lt;br /&gt;
&lt;br /&gt;
* Die hl. Elisabeth von Thüringen, 1946, 1956, 1972, 1985&lt;br /&gt;
* Saulus, 1947, 1966, 1982&lt;br /&gt;
* Der verlorene Sohn, 1948, 1977&lt;br /&gt;
* Die sel. Irmengard, 1949, 1968, 1983&lt;br /&gt;
* Der Ägyptische Joseph, 1950, 1979&lt;br /&gt;
* Franziskus von Assisi, 1951, 1967, 1980&lt;br /&gt;
* Margaretha von Cortona, 1952, 1969&lt;br /&gt;
* Nikolaus von Flüe, 1953, 1973, &lt;br /&gt;
* Thomas Morus, 1954, 1976&lt;br /&gt;
* Bruder Konrad von Parzham, 1955, 1970, 1984&lt;br /&gt;
* Maria Lourdes, 1957, 1974, 1988&lt;br /&gt;
* Hedwig von Andechs, 1958, 1975&lt;br /&gt;
* Die hl. Nothburga, 1959, 1971,1987&lt;br /&gt;
* Der hl. Pfarrer von Ars, 1960, 1989&lt;br /&gt;
* Klara von Assisi, 1961&lt;br /&gt;
* Klemens Maria Hofbauer, 1962&lt;br /&gt;
* Mutter Monika und ihr Sohn Augustinus, 1963, 1981&lt;br /&gt;
* Königin Adelheid, 1964, 1978&lt;br /&gt;
* Der Rufer Gottes - Kolping, 1965&lt;br /&gt;
* Saulus, 1966, 1982&lt;br /&gt;
* Franziskus von Aissisi, 1967, 1980&lt;br /&gt;
* Der hl. Stephanus, 1986&lt;br /&gt;
* Moses, 1990&lt;br /&gt;
&lt;br /&gt;
Recently performed plays:&lt;br /&gt;
&lt;br /&gt;
* Gerhard Prell: „Martin Luther“ (religious play)&lt;br /&gt;
* [[Paula Aiblinger]]: Bruder Konrad (religious play)&lt;br /&gt;
* Paula Aiblinger: Hedwig von Andechs (religious play)&lt;br /&gt;
* [[Julia and Werner Hofmann]]: Irmengard vom Chiemsee (religious play)&lt;br /&gt;
* Julia and Werner Hofmann: Die Musketiere (for families)&lt;br /&gt;
* [[Erich Eckert]], Hubert Bomba, Elisabeth Neubauer: Der verlorene Sohn (religious play)&lt;br /&gt;
* [[Franz Schauer]]: „Die Pfiffige Urschl“ (comedy)&lt;br /&gt;
* [[Ulla Kling]]: A Leich zum Kaffee (comedy)&lt;br /&gt;
* [[Carl Borro Schwerla]]: Graf Schorschi (comedy)&lt;br /&gt;
* [[Georg Lohmeier]]: Königlich Bayerisches Amtsgericht (comedy)&lt;br /&gt;
* [[Marianne Santl]]: Herkules der Musterstier (comedy)&lt;br /&gt;
* [[Ludwig Anzensgruber]]: Doppelselbstmord. Ko des sei? (comedy)&lt;br /&gt;
* [[Howard Pyle]]: Robin Hood (for children)&lt;br /&gt;
* Hirtenstück&lt;br /&gt;
* Astrid Lindgren: Ronja Räubertochter (for children)&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
* Harvolk, Edgar, &#039;&#039;Das Endorfer Volksschauspiel&#039;&#039;, Rosenheim 1974.&lt;br /&gt;
* Harvolk, Edgar, &#039;&#039;Die Endorfer Volksschauspiele seit 1790&#039;&#039;, Munich 1990.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.theater-endorf.de/ Official Website]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[[Category:Germany]]&lt;br /&gt;
[[Category:Clubs, Societies and Institutions]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=MediaWiki:Tagline&amp;diff=1864</id>
		<title>MediaWiki:Tagline</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=MediaWiki:Tagline&amp;diff=1864"/>
		<updated>2026-01-27T20:29:15Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Delete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=August_von_Kotzebue&amp;diff=1863</id>
		<title>August von Kotzebue</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=August_von_Kotzebue&amp;diff=1863"/>
		<updated>2026-01-27T20:25:22Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Use qid&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q57242}}&lt;br /&gt;
[https://de.wikipedia.org/wiki/August_von_Kotzebue August von Kotzebue] (1761-1819) was a writer, dramatist, amateur theatre practitioner, editor, public intellectual and political actor. &lt;br /&gt;
&lt;br /&gt;
[[File:Menschenhaß und Reue 1827 Kopie.jpg|thumb|Menschenhaß und Reue, Illustration from August von Kotzebue’s sämmtliche dramatische Werke. Leipzig, bey Paul Gotthelf Kummer, 1827.]]&lt;br /&gt;
&lt;br /&gt;
== Kotzebue and amateur theatricals ==&lt;br /&gt;
[[File:Kanuti Gildi Saal1.JPG|thumb|Kanutigilde, Tallinn]]&lt;br /&gt;
He is one of the first dramatists that became internationally known and his plays were translated to many languages already during his lifetime. He was particularly popular in amateur theatricals. With his &amp;quot;Almanach dramatischer Spiele&amp;quot; (1802 to 1820) he wrote and edited a series of easy pieces and one-act plays particularly suited for performance in amateur theatres. In 1784, together with Friedrich Gustav von Rosen, he founded the [[Liebhabertheater Reval|Liebhabertheater in Reval]] (today Tallinn, Estonia) and continued to write and perform for it until its closing in 1795. Here, he premiered most of his later famous pieces, e.g. &amp;quot;Menschenhaß und Reue&amp;quot; (premiered 1788), &amp;quot;Der Eremit auf Formentera&amp;quot; (1790), &amp;quot;Die Indianer in England&amp;quot; (premiered 1789), &amp;quot;Die Sonnenjungfrau&amp;quot; (premiered 1789). Kotzebue initiated the building of a stage in the Kanutigilde where they performed. The amateur theatre in Reval ended its activity after the opening of a professional theatre in the city. From 1812 to 1813 was Kotzebue the director of the Reval city theatre.&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=August_von_Kotzebue&amp;diff=1862</id>
		<title>August von Kotzebue</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=August_von_Kotzebue&amp;diff=1862"/>
		<updated>2026-01-27T20:24:49Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Use infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox}}&lt;br /&gt;
[https://de.wikipedia.org/wiki/August_von_Kotzebue August von Kotzebue] (1761-1819) was a writer, dramatist, amateur theatre practitioner, editor, public intellectual and political actor. &lt;br /&gt;
&lt;br /&gt;
[[File:Menschenhaß und Reue 1827 Kopie.jpg|thumb|Menschenhaß und Reue, Illustration from August von Kotzebue’s sämmtliche dramatische Werke. Leipzig, bey Paul Gotthelf Kummer, 1827.]]&lt;br /&gt;
&lt;br /&gt;
== Kotzebue and amateur theatricals ==&lt;br /&gt;
[[File:Kanuti Gildi Saal1.JPG|thumb|Kanutigilde, Tallinn]]&lt;br /&gt;
He is one of the first dramatists that became internationally known and his plays were translated to many languages already during his lifetime. He was particularly popular in amateur theatricals. With his &amp;quot;Almanach dramatischer Spiele&amp;quot; (1802 to 1820) he wrote and edited a series of easy pieces and one-act plays particularly suited for performance in amateur theatres. In 1784, together with Friedrich Gustav von Rosen, he founded the [[Liebhabertheater Reval|Liebhabertheater in Reval]] (today Tallinn, Estonia) and continued to write and perform for it until its closing in 1795. Here, he premiered most of his later famous pieces, e.g. &amp;quot;Menschenhaß und Reue&amp;quot; (premiered 1788), &amp;quot;Der Eremit auf Formentera&amp;quot; (1790), &amp;quot;Die Indianer in England&amp;quot; (premiered 1789), &amp;quot;Die Sonnenjungfrau&amp;quot; (premiered 1789). Kotzebue initiated the building of a stage in the Kanutigilde where they performed. The amateur theatre in Reval ended its activity after the opening of a professional theatre in the city. From 1812 to 1813 was Kotzebue the director of the Reval city theatre.&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1861</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1861"/>
		<updated>2026-01-27T20:19:56Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Image width&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year and month and day then&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, tonumber(year),&lt;br /&gt;
                                         tonumber(month), tonumber(day))&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18)&lt;br /&gt;
        local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
        if image then&lt;br /&gt;
            local imageStr = formatValue(image)&lt;br /&gt;
            if imageStr then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18)&lt;br /&gt;
    local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
    if image then&lt;br /&gt;
        local imageStr = formatValue(image)&lt;br /&gt;
        if imageStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|300px]]&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;{| style=&amp;quot;width:100%; text-align:center;&amp;quot;\n|-\n| [&#039; ..&lt;br /&gt;
                    websiteStr .. &#039; &#039; .. displayUrl .. &#039;]\n|}&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1860</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1860"/>
		<updated>2026-01-27T20:15:09Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Update label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year and month and day then&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, tonumber(year),&lt;br /&gt;
                                         tonumber(month), tonumber(day))&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local personTitle = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            personTitle = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = personTitle,&lt;br /&gt;
            titleClass = &#039;hintergrundfarbe6&#039;,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18)&lt;br /&gt;
        local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
        if image then&lt;br /&gt;
            local imageStr = formatValue(image)&lt;br /&gt;
            if imageStr then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|250px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18)&lt;br /&gt;
    local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
    if image then&lt;br /&gt;
        local imageStr = formatValue(image)&lt;br /&gt;
        if imageStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|250px]]&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;{| style=&amp;quot;width:100%; text-align:center;&amp;quot;\n|-\n| [&#039; ..&lt;br /&gt;
                    websiteStr .. &#039; &#039; .. displayUrl .. &#039;]\n|}&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1859</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1859"/>
		<updated>2026-01-27T20:12:35Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: New image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year and month and day then&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, tonumber(year),&lt;br /&gt;
                                         tonumber(month), tonumber(day))&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = entity.labels.en,&lt;br /&gt;
            titleClass = &#039;hintergrundfarbe6&#039;,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add image (P18)&lt;br /&gt;
        local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
        if image then&lt;br /&gt;
            local imageStr = formatValue(image)&lt;br /&gt;
            if imageStr then&lt;br /&gt;
                infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|250px]]&#039;)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18)&lt;br /&gt;
    local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
    if image then&lt;br /&gt;
        local imageStr = formatValue(image)&lt;br /&gt;
        if imageStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|250px]]&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;{| style=&amp;quot;width:100%; text-align:center;&amp;quot;\n|-\n| [&#039; ..&lt;br /&gt;
                    websiteStr .. &#039; &#039; .. displayUrl .. &#039;]\n|}&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) ..&lt;br /&gt;
               &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1858</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1858"/>
		<updated>2026-01-27T20:04:05Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Add categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year and month and day then&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, tonumber(year),&lt;br /&gt;
                                         tonumber(month), tonumber(day))&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local given = formatValue(getPropertyValue(&#039;P735&#039;)) or &#039;&#039;&lt;br /&gt;
        local family = formatValue(getPropertyValue(&#039;P734&#039;)) or &#039;&#039;&lt;br /&gt;
        local personTitle = (given .. &#039; &#039; .. family):gsub(&#039;^%s+&#039;, &#039;&#039;):gsub(&lt;br /&gt;
                                &#039;%s+$&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = personTitle ~= &#039;&#039; and personTitle or qid,&lt;br /&gt;
            titleClass = &#039;hintergrundfarbe6&#039;,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox) .. &#039;\n[[Category:People]]&#039;&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18)&lt;br /&gt;
    local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
    if image then&lt;br /&gt;
        local imageStr = formatValue(image)&lt;br /&gt;
        if imageStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|250px]]&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;{| style=&amp;quot;width:100%; text-align:center;&amp;quot;\n|-\n| [&#039; ..&lt;br /&gt;
                    websiteStr .. &#039; &#039; .. displayUrl .. &#039;]\n|}&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox) .. &#039;\n[[Category:Clubs, Societies and Institutions]]&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Robert_Coates&amp;diff=1857</id>
		<title>Robert Coates</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Robert_Coates&amp;diff=1857"/>
		<updated>2026-01-27T20:03:15Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: remove category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q1747746}}&lt;br /&gt;
Robert Coates (1772- 21 February 1848) was an amateur actor, who performed in Britain in the early nineteenth century. He was satirised by the press and by cartoonists for his amateur theatrical endeavours and for his interests in fashion.    &lt;br /&gt;
&lt;br /&gt;
== Amateur Theatrical Career==&lt;br /&gt;
He performed in a number of roles in the early nineteenth century. &lt;br /&gt;
&lt;br /&gt;
==Personal Life==&lt;br /&gt;
He was married in 1823 to Emma and had two children.  &lt;br /&gt;
&lt;br /&gt;
Using queer historiographical approaches to studying Robert Coates, it seems possible that he was queer.   &lt;br /&gt;
&lt;br /&gt;
Robert Coates is buried in [[Kensal Green Cemetery]] in London.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:The Gay Lothario. The Great and Celebrated Amateur of Fashion MET DP818363.jpg|The Gay Lothario: The Great and Celebrated Amateur of Fashion&lt;br /&gt;
File:The amateur actor Robert Coates dreaming about his success o Wellcome V0050204.jpg|Satirical image of Robert Coates titled &#039;An Amateur&#039;s Dream&#039;.&lt;br /&gt;
File:Bodleian Libraries, Princely piety, or- the worshippers at Wanstead.jpg|Caricature titled &#039;Princely Piety, or- the Worshippers at Wanstead&#039;. The caricature, by George Cruikshank, depicts suitors wooing a wealthy young heiress. Robert Coates appears in black, to the left of Sir Lumley Skeffington in red, at the foot of the staircase.&lt;br /&gt;
File:Robert Coates (actor).jpg|Robert Coates&lt;br /&gt;
File:Portrait of Emma Anne Coates (nee Robinson) - DPLA - a50ac6022116e3c100a5fc8af59977ba.jpg|Emma Anne Coates, the wife of Robert Coates&lt;br /&gt;
File:Grave of Robert Coates in Kensal Green Cemetery.jpg|Robert Coates&#039;s grave in Kensal Green Cemetery, London.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
[[Category:Britain]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Robert_Coates&amp;diff=1856</id>
		<title>Robert Coates</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Robert_Coates&amp;diff=1856"/>
		<updated>2026-01-27T20:01:36Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: use infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q1747746}}&lt;br /&gt;
Robert Coates (1772- 21 February 1848) was an amateur actor, who performed in Britain in the early nineteenth century. He was satirised by the press and by cartoonists for his amateur theatrical endeavours and for his interests in fashion.    &lt;br /&gt;
&lt;br /&gt;
== Amateur Theatrical Career==&lt;br /&gt;
He performed in a number of roles in the early nineteenth century. &lt;br /&gt;
&lt;br /&gt;
==Personal Life==&lt;br /&gt;
He was married in 1823 to Emma and had two children.  &lt;br /&gt;
&lt;br /&gt;
Using queer historiographical approaches to studying Robert Coates, it seems possible that he was queer.   &lt;br /&gt;
&lt;br /&gt;
Robert Coates is buried in [[Kensal Green Cemetery]] in London.      &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed-hover&amp;quot;&amp;gt;&lt;br /&gt;
File:The Gay Lothario. The Great and Celebrated Amateur of Fashion MET DP818363.jpg|The Gay Lothario: The Great and Celebrated Amateur of Fashion&lt;br /&gt;
File:The amateur actor Robert Coates dreaming about his success o Wellcome V0050204.jpg|Satirical image of Robert Coates titled &#039;An Amateur&#039;s Dream&#039;.&lt;br /&gt;
File:Bodleian Libraries, Princely piety, or- the worshippers at Wanstead.jpg|Caricature titled &#039;Princely Piety, or- the Worshippers at Wanstead&#039;. The caricature, by George Cruikshank, depicts suitors wooing a wealthy young heiress. Robert Coates appears in black, to the left of Sir Lumley Skeffington in red, at the foot of the staircase.&lt;br /&gt;
File:Robert Coates (actor).jpg|Robert Coates&lt;br /&gt;
File:Portrait of Emma Anne Coates (nee Robinson) - DPLA - a50ac6022116e3c100a5fc8af59977ba.jpg|Emma Anne Coates, the wife of Robert Coates&lt;br /&gt;
File:Grave of Robert Coates in Kensal Green Cemetery.jpg|Robert Coates&#039;s grave in Kensal Green Cemetery, London.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
[[Category:Britain]]&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Germaine_de_Sta%C3%ABl&amp;diff=1855</id>
		<title>Germaine de Staël</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Germaine_de_Sta%C3%ABl&amp;diff=1855"/>
		<updated>2026-01-27T19:53:38Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Use correct infobox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DynamicInfobox|qid=Q123041}}&lt;br /&gt;
[https://sv.wikipedia.org/wiki/Germaine_de_Staël Germaine de Staël] (1766-1817) used her prominent position in the salons to question authority and create her own theatre. Her political and feminist writings caused her to be exiled for many years, and she soon became a forerunner of the emerging Romantic movement.&amp;lt;ref&amp;gt;Maria Fairweather, &#039;&#039;Madame de Staël&#039;&#039; (London, 2005); Carla Hesse, &#039;&#039;The Other Enlightenment&#039;&#039; (New Jersey, 2001); Machteld de Poortere, &#039;&#039;The Philosophical and Literary Ideas of Mme De Staël and of Mme De Genlis&#039;&#039;, (New York, 2007).&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
While in exile she surrounded herself with the intellectuals of Europe and created her own amateur theatre in Coppet, Switzerland, where some of her own plays where performed, often with de Staël herself on stage.&amp;lt;ref&amp;gt;Rougemont, Martine de &#039;Pour un répertoire des rôles et des représentations de Mme de Staël’, &#039;&#039;Cahiers Staëliens&#039;&#039;, no. 19, 1974, p. 79-92; Plagnol-Diéval, M-E, ‘Le Théâtre des familles de madame de Staël’, &#039;&#039;Cahiers Staëliens&#039;&#039;, no. 50, 1999, p. 45-65 ; Blandine Poirier, &#039;Le Théâtre de société de Germaine de Staël: une forme d’engagement ?&#039;, in &#039;&#039;Théâtre et société : Réseaux de sociabilité et représentations de la société&#039;&#039;, eds. Valentina Ponzetto and Jennifer Ruimi, p. 105-124. &amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:Germaine de Staël by Vladimir Borovikovsky.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[[Category:People]]&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:DynamicInfobox&amp;diff=1854</id>
		<title>Template:DynamicInfobox</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:DynamicInfobox&amp;diff=1854"/>
		<updated>2026-01-27T19:53:12Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Create template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#invoke:DynamicCapiunto|main|qid={{{qid}}}}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is an example usage of this template with a sample Wikidata QID.&lt;br /&gt;
&lt;br /&gt;
{{Organization|qid=Q120730912}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;params&amp;quot;: {&lt;br /&gt;
    &amp;quot;qid&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Wikidata QID&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Mandatory Wikidata QID to fetch all parameters dynamically from Wikidata.&amp;quot;,&lt;br /&gt;
      &amp;quot;required&amp;quot;: true&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;Infobox for the Amateur Theatre Wiki Fetches all parameters dynamically from Wikidata based on the mandatory QID.&amp;quot;,&lt;br /&gt;
  &amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1853</id>
		<title>Module:DynamicCapiunto</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:DynamicCapiunto&amp;diff=1853"/>
		<updated>2026-01-27T19:50:08Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Create module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local capiunto = require &#039;capiunto&#039;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local qid = args.qid or args[1]&lt;br /&gt;
&lt;br /&gt;
    if not qid then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: No Wikidata QID provided&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Register the entity association&lt;br /&gt;
    frame:callParserFunction(&#039;#unlinkedwikibase&#039;, &#039;id=&#039; .. qid)&lt;br /&gt;
&lt;br /&gt;
    -- Get entity data from UnlinkedWikibase&lt;br /&gt;
    local entity = mw.ext.UnlinkedWikibase.getEntity(qid)&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Error: Entity &#039; .. qid ..&lt;br /&gt;
                   &#039; not found&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to get property value from entity&lt;br /&gt;
    local function getPropertyValue(pid)&lt;br /&gt;
        if not entity.claims or not entity.claims[pid] then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then return nil end&lt;br /&gt;
&lt;br /&gt;
        local claim = claims[1]&lt;br /&gt;
        if not claim.mainsnak or not claim.mainsnak.datavalue then&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return claim.mainsnak.datavalue.value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper function to format different value types&lt;br /&gt;
    local function formatValue(value, valueType)&lt;br /&gt;
        if not value then return nil end&lt;br /&gt;
&lt;br /&gt;
        if type(value) == &#039;table&#039; then&lt;br /&gt;
            -- Handle time values&lt;br /&gt;
            if value.time then&lt;br /&gt;
                -- Extract year-month-day from +2023-01-15T00:00:00Z format&lt;br /&gt;
                local dateStr = value.time&lt;br /&gt;
                local year, month, day =&lt;br /&gt;
                    dateStr:match(&#039;^[+-]?(%d+)-(%d+)-(%d+)&#039;)&lt;br /&gt;
                if year and month and day then&lt;br /&gt;
                    return string.format(&#039;%04d-%02d-%02d&#039;, tonumber(year),&lt;br /&gt;
                                         tonumber(month), tonumber(day))&lt;br /&gt;
                end&lt;br /&gt;
                return value.time&lt;br /&gt;
                -- Handle entity references (Q-IDs)&lt;br /&gt;
            elseif value.id then&lt;br /&gt;
                local linkedEntity = mw.ext.UnlinkedWikibase.getEntity(value.id)&lt;br /&gt;
                if linkedEntity then&lt;br /&gt;
                    local label = (linkedEntity.labels and&lt;br /&gt;
                                      linkedEntity.labels.en) and&lt;br /&gt;
                                      linkedEntity.labels.en.value or value.id&lt;br /&gt;
                    -- Then prefer an en.wikipedia sitelink (external link)&lt;br /&gt;
                    if linkedEntity.sitelinks and linkedEntity.sitelinks.enwiki and&lt;br /&gt;
                        linkedEntity.sitelinks.enwiki.url then&lt;br /&gt;
                        return&lt;br /&gt;
                            &#039;[&#039; .. linkedEntity.sitelinks.enwiki.url .. &#039; &#039; ..&lt;br /&gt;
                                label .. &#039;]&#039;&lt;br /&gt;
                    end&lt;br /&gt;
                    -- Fallback to the English label if available&lt;br /&gt;
                    if linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                        return label&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
                return value.id&lt;br /&gt;
                -- Handle monolingual text&lt;br /&gt;
            elseif value.text then&lt;br /&gt;
                return value.text&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(value)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Helper to get claim entity id (if the claim is an entity)&lt;br /&gt;
    local function getClaimEntityId(pid)&lt;br /&gt;
        local v = getPropertyValue(pid)&lt;br /&gt;
        if type(v) == &#039;table&#039; and v.id then return v.id end&lt;br /&gt;
        return nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Decide which infobox to render based on instance (P31)&lt;br /&gt;
    local instanceId = getClaimEntityId(&#039;P31&#039;)&lt;br /&gt;
&lt;br /&gt;
    if instanceId == &#039;Q5&#039; then&lt;br /&gt;
        -- Person infobox&lt;br /&gt;
        local given = formatValue(getPropertyValue(&#039;P735&#039;)) or &#039;&#039;&lt;br /&gt;
        local family = formatValue(getPropertyValue(&#039;P734&#039;)) or &#039;&#039;&lt;br /&gt;
        local personTitle = (given .. &#039; &#039; .. family):gsub(&#039;^%s+&#039;, &#039;&#039;):gsub(&lt;br /&gt;
                                &#039;%s+$&#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = personTitle ~= &#039;&#039; and personTitle or qid,&lt;br /&gt;
            titleClass = &#039;hintergrundfarbe6&#039;,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Birthplace (P19)&lt;br /&gt;
        local birthplace = getPropertyValue(&#039;P19&#039;)&lt;br /&gt;
        if birthplace then&lt;br /&gt;
            infobox:addRow(&#039;Birthplace&#039;, formatValue(birthplace))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Birthday (P569)&lt;br /&gt;
        local birthday = getPropertyValue(&#039;P569&#039;)&lt;br /&gt;
        if birthday then&lt;br /&gt;
            infobox:addRow(&#039;Birthday&#039;, formatValue(birthday))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Death (P570)&lt;br /&gt;
        local death = getPropertyValue(&#039;P570&#039;)&lt;br /&gt;
        if death then infobox:addRow(&#039;Death&#039;, formatValue(death)) end&lt;br /&gt;
&lt;br /&gt;
        -- Occupation (P106)&lt;br /&gt;
        local occupation = getPropertyValue(&#039;P106&#039;)&lt;br /&gt;
        if occupation then&lt;br /&gt;
            infobox:addRow(&#039;Occupation&#039;, formatValue(occupation))&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        return tostring(infobox)&lt;br /&gt;
    else&lt;br /&gt;
        -- Default: organisation/troupe infobox (existing behavior)&lt;br /&gt;
        local title = qid&lt;br /&gt;
        if entity.labels and entity.labels.en then&lt;br /&gt;
            title = entity.labels.en.value&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local infobox = capiunto.create({&lt;br /&gt;
            title = title,&lt;br /&gt;
            bodyClass = &#039;infobox vevent&#039;,&lt;br /&gt;
            bodyStyle = &#039;width: 300px;&#039;&lt;br /&gt;
        })&lt;br /&gt;
&lt;br /&gt;
        -- Add official name (P1448)&lt;br /&gt;
        local officialName = getPropertyValue(&#039;P1448&#039;)&lt;br /&gt;
        if officialName then&lt;br /&gt;
            infobox:addRow(&#039;Official Name&#039;, formatValue(officialName))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add logo (P154)&lt;br /&gt;
    local logo = getPropertyValue(&#039;P154&#039;)&lt;br /&gt;
    if logo then&lt;br /&gt;
        local logoStr = formatValue(logo)&lt;br /&gt;
        if logoStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. logoStr .. &#039;|150px]]&#039;, &#039;Logo&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add image (P18)&lt;br /&gt;
    local image = getPropertyValue(&#039;P18&#039;)&lt;br /&gt;
    if image then&lt;br /&gt;
        local imageStr = formatValue(image)&lt;br /&gt;
        if imageStr then&lt;br /&gt;
            infobox:addImage(&#039;[[File:&#039; .. imageStr .. &#039;|250px]]&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add headquarters (P159)&lt;br /&gt;
    local headquarters = getPropertyValue(&#039;P159&#039;)&lt;br /&gt;
    if headquarters then&lt;br /&gt;
        infobox:addRow(&#039;Headquarters&#039;, formatValue(headquarters))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add founding date (P571)&lt;br /&gt;
    local foundingDate = getPropertyValue(&#039;P571&#039;)&lt;br /&gt;
    if foundingDate then&lt;br /&gt;
        infobox:addRow(&#039;Founding Date&#039;, formatValue(foundingDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add dissolution date (P576)&lt;br /&gt;
    local dissolutionDate = getPropertyValue(&#039;P576&#039;)&lt;br /&gt;
    if dissolutionDate then&lt;br /&gt;
        infobox:addRow(&#039;Dissolution Date&#039;, formatValue(dissolutionDate))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add country (P17)&lt;br /&gt;
    local country = getPropertyValue(&#039;P17&#039;)&lt;br /&gt;
    if country then infobox:addRow(&#039;Country&#039;, formatValue(country)) end&lt;br /&gt;
&lt;br /&gt;
    -- Add parent organization (P749)&lt;br /&gt;
    local parentOrg = getPropertyValue(&#039;P749&#039;)&lt;br /&gt;
    if parentOrg then&lt;br /&gt;
        infobox:addRow(&#039;Parent Organization&#039;, formatValue(parentOrg))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Add official website (P856) as full-width row at bottom&lt;br /&gt;
    local website = getPropertyValue(&#039;P856&#039;)&lt;br /&gt;
    if website then&lt;br /&gt;
        local websiteStr = formatValue(website)&lt;br /&gt;
        if websiteStr then&lt;br /&gt;
            -- Strip http:// or https:// from display text&lt;br /&gt;
            local displayUrl = websiteStr:gsub(&#039;^https?://&#039;, &#039;&#039;)&lt;br /&gt;
            infobox:addWikitext(&lt;br /&gt;
                &#039;{| style=&amp;quot;width:100%; text-align:center;&amp;quot;\n|-\n| [&#039; ..&lt;br /&gt;
                    websiteStr .. &#039; &#039; .. displayUrl .. &#039;]\n|}&#039;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(infobox)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:Organization&amp;diff=1849</id>
		<title>Template:Organization</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:Organization&amp;diff=1849"/>
		<updated>2026-01-27T16:14:39Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: update with capiunto&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#invoke:CapiuntoOrganization|main|qid={{{qid}}}}}&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is an example usage of this template with a sample Wikidata QID.&lt;br /&gt;
&lt;br /&gt;
{{Organization|qid=Q120730912}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;params&amp;quot;: {&lt;br /&gt;
    &amp;quot;qid&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Wikidata QID&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Mandatory Wikidata QID to fetch all parameters dynamically from Wikidata.&amp;quot;,&lt;br /&gt;
      &amp;quot;required&amp;quot;: true&lt;br /&gt;
    },&amp;quot;official_name&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Name (P1448)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;logo&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Logo (P154)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Logo image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;image&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Image (P18)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;headquarters&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Headquarters (P159)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Headquarters.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;founding_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Founding Date (P571)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Founding date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;dissolution_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Dissolution Date (P576)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Dissolution date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;official_website&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Website (P856)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official website.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;country&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Country (P17)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Country.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_organization&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Parent Organization (P749)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Parent organization.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;Infobox for an organization. Fetches all parameters dynamically from Wikidata based on the mandatory QID.&amp;quot;,&lt;br /&gt;
  &amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:Organization&amp;diff=1847</id>
		<title>Template:Organization</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:Organization&amp;diff=1847"/>
		<updated>2026-01-27T14:11:56Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: link at bottom&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{| class=&amp;quot;float-right wikitable infobox&amp;quot; style=&amp;quot;width: 300px;&amp;quot; id=&amp;quot;template-organization&amp;quot; summary=&amp;quot;Infobox for organizations&amp;quot;&lt;br /&gt;
{{#unlinkedwikibase: id={{{qid}}} }}&lt;br /&gt;
&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P1448}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; font-size: 1.2em;&amp;quot; | {{#invoke:WDfetch|getvalue|pid=P1448}}&lt;br /&gt;
|&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; font-size: 1.2em;&amp;quot; | {{PAGENAME}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{!}}-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; padding: 10px;&amp;quot; |&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P154}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
{{#invoke:WDfetch|getvalue|pid=P154}}&amp;lt;br/&amp;gt;}}&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P18}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
{{#invoke:WDfetch|getvalue|pid=P18}}}}&lt;br /&gt;
&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P159}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Headquarters &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P159}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P571}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Founding Date &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P571}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P576}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Dissolution Date &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P576}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P17}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Country &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P17}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P749}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Parent Organization &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P749}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P856}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
{{!}}-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | {{#invoke:WDfetch|getvalue|pid=P856}}&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is an example usage of this template with a sample Wikidata QID.&lt;br /&gt;
&lt;br /&gt;
{{Organization|qid=Q120730912}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;params&amp;quot;: {&lt;br /&gt;
    &amp;quot;qid&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Wikidata QID&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Mandatory Wikidata QID to fetch all parameters dynamically from Wikidata.&amp;quot;,&lt;br /&gt;
      &amp;quot;required&amp;quot;: true&lt;br /&gt;
    },&amp;quot;official_name&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Name (P1448)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;logo&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Logo (P154)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Logo image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;image&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Image (P18)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;headquarters&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Headquarters (P159)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Headquarters.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;founding_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Founding Date (P571)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Founding date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;dissolution_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Dissolution Date (P576)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Dissolution date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;official_website&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Website (P856)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official website.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;country&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Country (P17)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Country.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_organization&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Parent Organization (P749)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Parent organization.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;Infobox for an organization. Fetches all parameters dynamically from Wikidata based on the mandatory QID.&amp;quot;,&lt;br /&gt;
  &amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:Organization&amp;diff=1846</id>
		<title>Template:Organization</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:Organization&amp;diff=1846"/>
		<updated>2026-01-27T14:08:06Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: pagename&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{| class=&amp;quot;float-right wikitable infobox&amp;quot; style=&amp;quot;width: 300px;&amp;quot; id=&amp;quot;template-organization&amp;quot; summary=&amp;quot;Infobox for organizations&amp;quot;&lt;br /&gt;
{{#unlinkedwikibase: id={{{qid}}} }}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P1448}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; font-size: 1.2em;&amp;quot; | {{#invoke:WDfetch|getvalue|pid=P1448}}&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; font-size: 1.2em;&amp;quot; | {{PAGENAME}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{!}}-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; padding: 10px;&amp;quot; |&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P154}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
{{#invoke:WDfetch|getvalue|pid=P154}}&amp;lt;br/&amp;gt;}}&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P18}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
{{#invoke:WDfetch|getvalue|pid=P18}}}}&lt;br /&gt;
&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P159}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Headquarters &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P159}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P571}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Founding Date &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P571}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P576}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Dissolution Date &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P576}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P856}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Official Website &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P856}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P17}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Country &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P17}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P749}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Parent Organization &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P749}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is an example usage of this template with a sample Wikidata QID.&lt;br /&gt;
&lt;br /&gt;
{{Organization|qid=Q120730912}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;params&amp;quot;: {&lt;br /&gt;
    &amp;quot;qid&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Wikidata QID&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Mandatory Wikidata QID to fetch all parameters dynamically from Wikidata.&amp;quot;,&lt;br /&gt;
      &amp;quot;required&amp;quot;: true&lt;br /&gt;
    },&amp;quot;official_name&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Name (P1448)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;logo&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Logo (P154)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Logo image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;image&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Image (P18)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;headquarters&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Headquarters (P159)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Headquarters.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;founding_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Founding Date (P571)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Founding date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;dissolution_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Dissolution Date (P576)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Dissolution date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;official_website&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Website (P856)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official website.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;country&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Country (P17)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Country.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_organization&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Parent Organization (P749)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Parent organization.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;Infobox for an organization. Fetches all parameters dynamically from Wikidata based on the mandatory QID.&amp;quot;,&lt;br /&gt;
  &amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:Organization&amp;diff=1845</id>
		<title>Template:Organization</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:Organization&amp;diff=1845"/>
		<updated>2026-01-27T14:06:26Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: fix text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{| class=&amp;quot;float-right wikitable infobox&amp;quot; style=&amp;quot;width: 300px;&amp;quot; id=&amp;quot;template-organization&amp;quot; summary=&amp;quot;Infobox for organizations&amp;quot;&lt;br /&gt;
{{#unlinkedwikibase: id={{{qid}}} }}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P1448}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; font-size: 1.2em;&amp;quot; | {{#invoke:WDfetch|getvalue|pid=P1448}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{!}}-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center; padding: 10px;&amp;quot; |&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P154}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
{{#invoke:WDfetch|getvalue|pid=P154}}&amp;lt;br/&amp;gt;}}&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P18}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
{{#invoke:WDfetch|getvalue|pid=P18}}}}&lt;br /&gt;
&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P159}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Headquarters &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P159}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P571}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Founding Date &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P571}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P576}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Dissolution Date &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P576}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P856}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Official Website &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P856}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P17}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Country &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P17}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P749}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
! Parent Organization &lt;br /&gt;
{{!}} {{#invoke:WDfetch|getvalue|pid=P749}}&lt;br /&gt;
{{!}}-}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is an example usage of this template with a sample Wikidata QID.&lt;br /&gt;
&lt;br /&gt;
{{Organization|qid=Q120730912}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;params&amp;quot;: {&lt;br /&gt;
    &amp;quot;qid&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Wikidata QID&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Mandatory Wikidata QID to fetch all parameters dynamically from Wikidata.&amp;quot;,&lt;br /&gt;
      &amp;quot;required&amp;quot;: true&lt;br /&gt;
    },&amp;quot;official_name&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Name (P1448)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;logo&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Logo (P154)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Logo image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;image&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Image (P18)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Image.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;headquarters&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Headquarters (P159)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Headquarters.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;founding_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Founding Date (P571)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Founding date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;dissolution_date&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Dissolution Date (P576)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Dissolution date.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;official_website&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Official Website (P856)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Official website.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;country&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Country (P17)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Country.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;parent_organization&amp;quot;: {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&lt;br /&gt;
      &amp;quot;label&amp;quot;: &amp;quot;Parent Organization (P749)&amp;quot;,&lt;br /&gt;
      &amp;quot;description&amp;quot;: &amp;quot;Parent organization.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;description&amp;quot;: &amp;quot;Infobox for an organization. Fetches all parameters dynamically from Wikidata based on the mandatory QID.&amp;quot;,&lt;br /&gt;
  &amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
</feed>