<?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-06-09T09:38:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<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=Module:CapiuntoOrganization&amp;diff=1852</id>
		<title>Module:CapiuntoOrganization</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:CapiuntoOrganization&amp;diff=1852"/>
		<updated>2026-01-27T17:33:03Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: test links to wikipedia&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;
    -- Get the title (use English label or QID as fallback)&lt;br /&gt;
    local title = qid&lt;br /&gt;
    if entity.labels and entity.labels.en then title = entity.labels.en.value end&lt;br /&gt;
&lt;br /&gt;
    -- Create the infobox&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;
&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=Module:CapiuntoOrganization&amp;diff=1851</id>
		<title>Module:CapiuntoOrganization</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:CapiuntoOrganization&amp;diff=1851"/>
		<updated>2026-01-27T16:20:34Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: nicer link&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 and linkedEntity.labels and&lt;br /&gt;
                    linkedEntity.labels.en then&lt;br /&gt;
                    -- Try to find a local page for this entity&lt;br /&gt;
                    local localTitle = mw.ext.UnlinkedWikibase.getLocalTitle(&lt;br /&gt;
                                           value.id)&lt;br /&gt;
                    if localTitle then&lt;br /&gt;
                        return &#039;[[&#039; .. localTitle.prefixedText .. &#039;|&#039; ..&lt;br /&gt;
                                   linkedEntity.labels.en.value .. &#039;]]&#039;&lt;br /&gt;
                    else&lt;br /&gt;
                        return linkedEntity.labels.en.value&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;
    -- Get the title (use English label or QID as fallback)&lt;br /&gt;
    local title = qid&lt;br /&gt;
    if entity.labels and entity.labels.en then title = entity.labels.en.value end&lt;br /&gt;
&lt;br /&gt;
    -- Create the infobox&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;
&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=Module:CapiuntoOrganization&amp;diff=1850</id>
		<title>Module:CapiuntoOrganization</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:CapiuntoOrganization&amp;diff=1850"/>
		<updated>2026-01-27T16:15:59Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: update registration&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 .. &#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&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then&lt;br /&gt;
            return nil&lt;br /&gt;
        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&lt;br /&gt;
            return nil&lt;br /&gt;
        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 = 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), 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 and linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                    -- Try to find a local page for this entity&lt;br /&gt;
                    local localTitle = mw.ext.UnlinkedWikibase.getLocalTitle(value.id)&lt;br /&gt;
                    if localTitle then&lt;br /&gt;
                        return &#039;[[&#039; .. localTitle.prefixedText .. &#039;|&#039; .. linkedEntity.labels.en.value .. &#039;]]&#039;&lt;br /&gt;
                    else&lt;br /&gt;
                        return linkedEntity.labels.en.value&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;
    -- Get the title (use English label or QID as fallback)&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;
    -- Create the infobox&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;
    &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 official website (P856)&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;
            infobox:addRow(&#039;Official Website&#039;, &#039;[&#039; .. websiteStr .. &#039;]&#039;)&lt;br /&gt;
        end&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&lt;br /&gt;
        infobox:addRow(&#039;Country&#039;, formatValue(country))&lt;br /&gt;
    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;
    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=Module:CapiuntoOrganization&amp;diff=1848</id>
		<title>Module:CapiuntoOrganization</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Module:CapiuntoOrganization&amp;diff=1848"/>
		<updated>2026-01-27T16:11:42Z</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;, {id = 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 .. &#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&lt;br /&gt;
            return nil&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        local claims = entity.claims[pid]&lt;br /&gt;
        if not claims or #claims == 0 then&lt;br /&gt;
            return nil&lt;br /&gt;
        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&lt;br /&gt;
            return nil&lt;br /&gt;
        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 = 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), 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 and linkedEntity.labels and linkedEntity.labels.en then&lt;br /&gt;
                    -- Try to find a local page for this entity&lt;br /&gt;
                    local localTitle = mw.ext.UnlinkedWikibase.getLocalTitle(value.id)&lt;br /&gt;
                    if localTitle then&lt;br /&gt;
                        return &#039;[[&#039; .. localTitle.prefixedText .. &#039;|&#039; .. linkedEntity.labels.en.value .. &#039;]]&#039;&lt;br /&gt;
                    else&lt;br /&gt;
                        return linkedEntity.labels.en.value&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;
    -- Get the title (use English label or QID as fallback)&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;
    -- Create the infobox&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;
    &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 official website (P856)&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;
            infobox:addRow(&#039;Official Website&#039;, &#039;[&#039; .. websiteStr .. &#039;]&#039;)&lt;br /&gt;
        end&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&lt;br /&gt;
        infobox:addRow(&#039;Country&#039;, formatValue(country))&lt;br /&gt;
    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;
    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=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>
	<entry>
		<id>https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Template:Organization&amp;diff=1844</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=1844"/>
		<updated>2026-01-27T14:05:00Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: test&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;
[[File:{{#invoke:WDfetch|getvalue|pid=P154}}|150px]]&amp;lt;br/&amp;gt;}}&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P18}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
[[File:{{#invoke:WDfetch|getvalue|pid=P18}}|280px]]}}&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=1843</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=1843"/>
		<updated>2026-01-27T14:01:02Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: Remove image tags&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;
    ! Official Name &lt;br /&gt;
    {{!}} {{#invoke:WDfetch|getvalue|pid=P1448}}}}&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P154}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
    ! Logo &lt;br /&gt;
    {{!}} {{#invoke:WDfetch|getvalue|pid=P154}}}}&lt;br /&gt;
{{!}}-&lt;br /&gt;
{{#if: {{#invoke:WDfetch|getvalue|pid=P18}} |&amp;lt;nowiki /&amp;gt;&lt;br /&gt;
    ! Image &lt;br /&gt;
    {{!}} {{#invoke:WDfetch|getvalue|pid=P18}}}}&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;
{{#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;
{{#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;
{{#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;
{{#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;
{{#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;
&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=Main_Page&amp;diff=1607</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Main_Page&amp;diff=1607"/>
		<updated>2025-09-03T12:41:23Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: redo link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Amateur Theatre Wiki. This is a place for anyone passionate about amateur theatre. Here, you can find out more about amateur theatre in your home country, town or village. You can discover what amateur theatre was like a century ago and learn how it works elsewhere around the world. Most importantly of all, you can join our growing community of amateur theatre historians, who are busy adding their own amateur theatre histories to this site.          &lt;br /&gt;
&lt;br /&gt;
History starts now - and the site includes details of productions and performances that happened this year, as well as those that took place in the distant past. It is a work in progress, and we need your help to grow this Wiki site. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:The Gay Lothario. The Great and Celebrated Amateur of Fashion MET DP818363.jpg|[[Robert Coates|The Gay Lothario: The Great and Celebrated Amateur of Fashion]]&lt;br /&gt;
File:Germaine de Staël by Vladimir Borovikovsky.png|Portrait of Anne Louise [[Germaine de Staël|Germaine de Staël-Holstein]]&lt;br /&gt;
File:Bildschirmfoto 2022-12-21 um 10.52.36.jpg|Detail from Theatre Bill, 1827&lt;br /&gt;
File:GER — BY – Oberbayern — Lkr. Rosenheim — Gemeinde Bad Endorf — Bad Endorf Ort — Rosenheimer Str. 6 (Volkstheater) Mattes 2021.jpg|[[Theatergesellschaft Bad Endorf]] (theatre association in Bad Endorf, Germany)&lt;br /&gt;
File:Herbert Gardner, Vanity Fair, 1886-04-07.jpg|Caricature of [[Herbert Gardner]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why should you get involved as a contributor? ==&lt;br /&gt;
For too long [[wikipedia:Amateur_theatre|amateur theatre]] has been undervalued in societies and cultures around the world. In most nations, the study of theatre has focussed almost exclusively on professional activity. However, amateur theatre has played a vital role in many theatrical ecologies and needs greater acknowledgement. It&#039;s only through documenting amateur theatrical activities and histories that the contribution of amateur theatre to these ecologies can begin to be recognised. &lt;br /&gt;
&lt;br /&gt;
== How to get an account ==&lt;br /&gt;
To contribute to the Amateur Theatre Wiki, you’ll need a user account. It’s easy to get started:&lt;br /&gt;
&lt;br /&gt;
# Send an email to &#039;&#039;&#039;[support.atwiki@lrz.uni-muenchen.de]&#039;&#039;&#039; with the subject line &amp;quot;Account Creation Request.&amp;quot;&lt;br /&gt;
# In your email, include:&lt;br /&gt;
#* Your username&lt;br /&gt;
#* A brief explanation of why you’d like to contribute&lt;br /&gt;
#* Any relevant affiliation with amateur theatre (optional)&lt;br /&gt;
&lt;br /&gt;
Once your request is reviewed, you will receive a reply with your login details.&lt;br /&gt;
&lt;br /&gt;
== How can you get involved? ==&lt;br /&gt;
Firstly, don&#039;t be scared! We&#039;ve made adding entries and editing the Amateur Theatre Wiki as easy as possible. Even if you have no experience editing websites before, this couldn&#039;t be easier.  &lt;br /&gt;
&lt;br /&gt;
Before you start, please make sure that you are aware of the [[Amateur Theatre Wiki:Community guidelines|community guidelines.]]&lt;br /&gt;
&lt;br /&gt;
Contact the Admin for account creation  &lt;br /&gt;
&lt;br /&gt;
To get you started, we&#039;ve created a number of helpful guides. Find out how to: &lt;br /&gt;
&lt;br /&gt;
* [[Amateur Theatre Wiki:Help#Creating new articles workflow|Create an entry]]&lt;br /&gt;
* [[mediawikiwiki:Help:Editing_pages|Edit an existing entry]] by using the [[mediawikiwiki:Help:VisualEditor/User_guide|Visual Editor]]&lt;br /&gt;
* [[Amateur Theatre Wiki:Help|Add a picture to an entry]]&lt;br /&gt;
&lt;br /&gt;
== How can you search the site? ==&lt;br /&gt;
At the top of the page you can enter your search terms into the bar at the top of the page, where it says &#039;Search Amateur Theatre Wiki&#039;. Alternatively, you might find it useful to search by category. Our [[Special:Categories|categories]] include:&lt;br /&gt;
&lt;br /&gt;
* [[:Category:People|People]]&lt;br /&gt;
* [[:Category:Venues|Venues]]&lt;br /&gt;
* [[:Category:Productions and Performances|Productions and Performances]]&lt;br /&gt;
* [[:Category:Clubs, Societies and Institutions|Clubs, Societies and Institutions]]&lt;br /&gt;
* [[:Category:Plays|Plays]]&lt;br /&gt;
* [[:Category:Music|Music]]&lt;br /&gt;
* [[:Category:Dance|Dance]]&lt;br /&gt;
&lt;br /&gt;
You might also want to search by country. &lt;br /&gt;
&lt;br /&gt;
== Example Entries ==&lt;br /&gt;
To give you an idea what sort of information you might find in the Amateur Theatre Wiki, here are some example entries for you to view:&lt;br /&gt;
* Example 1 - [[Robert Coates]] (Categories - People and Britain)&lt;br /&gt;
* Example 2 - [[Theatergesellschaft Urania]] (Category - Clubs, Societies and Institutions and Germany)&lt;br /&gt;
* Example 3 - [[Löfholmen’s Theatre Society]] (Categories - Clubs, Societies and Institutions and Sweden)&lt;br /&gt;
* Example 4 - [[Campden House]] (Categories - Venues and Britain)&lt;br /&gt;
&lt;br /&gt;
== Structured Data ==&lt;br /&gt;
The project has also produced a list of contemporary amateur theater associations which can be visualized as a map [https://w.wiki/86S$ here]. It contains (at the moment) only most of Germany&#039;s amateur theater scene organized by [[Bund Deutscher Amateurtheater (BDAT)|Bund Deutscher Amateurtheater]]. A full list of the amateur theaters can be found [https://w.wiki/86Td here].&lt;br /&gt;
&lt;br /&gt;
== About this Project ==&lt;br /&gt;
This site is part of the ERC Project &#039;&#039;&#039;P-Citizens&#039;&#039;&#039;, which researches Amateur Theatre Practice in Germany, France, Britain, Sweden and Switzerland from 1780-1850. For more information visit the [[Amateur Theatre Wiki:About|About-Page]] or the [https://www.p-citizens.gwi.uni-muenchen.de/ project website].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:Full emblem, black on transparent.png&lt;br /&gt;
File:LMU Muenchen Logo.svg&lt;br /&gt;
File:UniversityWarwickLogo.png&lt;br /&gt;
&amp;lt;/gallery&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=Main_Page&amp;diff=1606</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Main_Page&amp;diff=1606"/>
		<updated>2025-09-03T12:40:40Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ref&amp;gt;nskdfkhfoa&amp;lt;/ref&amp;gt;Welcome to the Amateur Theatre Wiki. This is a place for anyone passionate about amateur theatre. Here, you can find out more about amateur theatre in your home country, town or village. You can discover what amateur theatre was like a century ago and learn how it works elsewhere around the world. Most importantly of all, you can join our growing community of amateur theatre historians, who are busy adding their own amateur theatre histories to this site.          &lt;br /&gt;
&lt;br /&gt;
History starts now - and the site includes details of productions and performances that happened this year, as well as those that took place in the distant past. It is a work in progress, and we need your help to grow this Wiki site. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:The Gay Lothario. The Great and Celebrated Amateur of Fashion MET DP818363.jpg|[[Robert Coates|The Gay Lothario: The Great and Celebrated Amateur of Fashion]]&lt;br /&gt;
File:Germaine de Staël by Vladimir Borovikovsky.png|Portrait of Anne Louise [[Germaine de Staël|Germaine de Staël-Holstein]]&lt;br /&gt;
File:Bildschirmfoto 2022-12-21 um 10.52.36.jpg|Detail from Theatre Bill, 1827&lt;br /&gt;
File:GER — BY – Oberbayern — Lkr. Rosenheim — Gemeinde Bad Endorf — Bad Endorf Ort — Rosenheimer Str. 6 (Volkstheater) Mattes 2021.jpg|[[Theatergesellschaft Bad Endorf]] (theatre association in Bad Endorf, Germany)&lt;br /&gt;
File:Herbert Gardner, Vanity Fair, 1886-04-07.jpg|Caricature of [[Herbert Gardner]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why should you get involved as a contributor? ==&lt;br /&gt;
For too long [[wikipedia:Amateur_theatre|amateur theatre]] has been undervalued in societies and cultures around the world. In most nations, the study of theatre has focussed almost exclusively on professional activity. However, amateur theatre has played a vital role in many theatrical ecologies and needs greater acknowledgement. It&#039;s only through documenting amateur theatrical activities and histories that the contribution of amateur theatre to these ecologies can begin to be recognised. &lt;br /&gt;
&lt;br /&gt;
== How to get an account ==&lt;br /&gt;
To contribute to the Amateur Theatre Wiki, you’ll need a user account. It’s easy to get started:&lt;br /&gt;
&lt;br /&gt;
# Send an email to &#039;&#039;&#039;[support.atwiki@lrz.uni-muenchen.de]&#039;&#039;&#039; with the subject line &amp;quot;Account Creation Request.&amp;quot;&lt;br /&gt;
# In your email, include:&lt;br /&gt;
#* Your username&lt;br /&gt;
#* A brief explanation of why you’d like to contribute&lt;br /&gt;
#* Any relevant affiliation with amateur theatre (optional)&lt;br /&gt;
&lt;br /&gt;
Once your request is reviewed, you will receive a reply with your login details.&lt;br /&gt;
&lt;br /&gt;
== How can you get involved? ==&lt;br /&gt;
Firstly, don&#039;t be scared! We&#039;ve made adding entries and editing the Amateur Theatre Wiki as easy as possible. Even if you have no experience editing websites before, this couldn&#039;t be easier.  &lt;br /&gt;
&lt;br /&gt;
Before you start, please make sure that you are aware of the [[Amateur Theatre Wiki:Community guidelines|community guidelines.]]&lt;br /&gt;
&lt;br /&gt;
Contact the Admin for account creation  &lt;br /&gt;
&lt;br /&gt;
To get you started, we&#039;ve created a number of helpful guides. Find out how to: &lt;br /&gt;
&lt;br /&gt;
* [[Amateur Theatre Wiki:Help#Creating new articles workflow|Create an entry]]&lt;br /&gt;
* [[mediawikiwiki:Help:Editing_pages|Edit an existing entry]] by using the [[mediawikiwiki:Help:VisualEditor/User_guide|Visual Editor]]&lt;br /&gt;
* [[Amateur Theatre Wiki:Help|Add a picture to an entry]]&lt;br /&gt;
&lt;br /&gt;
== How can you search the site? ==&lt;br /&gt;
At the top of the page you can enter your search terms into the bar at the top of the page, where it says &#039;Search Amateur Theatre Wiki&#039;. Alternatively, you might find it useful to search by category. Our [[Special:Categories|categories]] include:&lt;br /&gt;
&lt;br /&gt;
* [[:Category:People|People]]&lt;br /&gt;
* [[:Category:Venues|Venues]]&lt;br /&gt;
* [[:Category:Productions and Performances|Productions and Performances]]&lt;br /&gt;
* [[:Category:Clubs, Societies and Institutions|Clubs, Societies and Institutions]]&lt;br /&gt;
* [[:Category:Plays|Plays]]&lt;br /&gt;
* [[:Category:Music|Music]]&lt;br /&gt;
* [[:Category:Dance|Dance]]&lt;br /&gt;
&lt;br /&gt;
You might also want to search by country. &lt;br /&gt;
&lt;br /&gt;
== Example Entries ==&lt;br /&gt;
To give you an idea what sort of information you might find in the Amateur Theatre Wiki, here are some example entries for you to view:&lt;br /&gt;
* Example 1 - [[Robert Coates]] (Categories - People and Britain)&lt;br /&gt;
* Example 2 - [[Theatergesellschaft Urania]] (Category - Clubs, Societies and Institutions and Germany)&lt;br /&gt;
* Example 3 - [[Löfholmen’s Theatre Society]] (Categories - Clubs, Societies and Institutions and Sweden)&lt;br /&gt;
* Example 4 - [[Campden House]] (Categories - Venues and Britain)&lt;br /&gt;
&lt;br /&gt;
== Structured Data ==&lt;br /&gt;
The project has also produced a list of contemporary amateur theater associations which can be visualized as a map [https://w.wiki/86S$ here]. It contains (at the moment) only most of Germany&#039;s amateur theater scene organized by [[Bund Deutscher Amateurtheater (BDAT)|Bund Deutscher Amateurtheater]]. A full list of the amateur theaters can be found [https://w.wiki/86Td here].&lt;br /&gt;
&lt;br /&gt;
== About this Project ==&lt;br /&gt;
This site is part of the ERC Project &#039;&#039;&#039;P-Citizens&#039;&#039;&#039;, which researches Amateur Theatre Practice in Germany, France, Britain, Sweden and Switzerland from 1780-1850. For more information visit the [[Amateur Theatre Wiki:About|About-Page]] or the [https://www.p-citizens.gwi.uni-muenchen.de/ project website].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:Full emblem, black on transparent.png&lt;br /&gt;
File:LMU Muenchen Logo.svg&lt;br /&gt;
File:UniversityWarwickLogo.png&lt;br /&gt;
&amp;lt;/gallery&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=Main_Page&amp;diff=1605</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.amateur-theatre-wiki.gwi.uni-muenchen.de/index.php?title=Main_Page&amp;diff=1605"/>
		<updated>2025-09-03T12:31:41Z</updated>

		<summary type="html">&lt;p&gt;PCAdmin: /* How to get an account */ new mail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Amateur Theatre Wiki. This is a place for anyone passionate about amateur theatre. Here, you can find out more about amateur theatre in your home country, town or village. You can discover what amateur theatre was like a century ago and learn how it works elsewhere around the world. Most importantly of all, you can join our growing community of amateur theatre historians, who are busy adding their own amateur theatre histories to this site.          &lt;br /&gt;
&lt;br /&gt;
History starts now - and the site includes details of productions and performances that happened this year, as well as those that took place in the distant past. It is a work in progress, and we need your help to grow this Wiki site. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:The Gay Lothario. The Great and Celebrated Amateur of Fashion MET DP818363.jpg|[[Robert Coates|The Gay Lothario: The Great and Celebrated Amateur of Fashion]]&lt;br /&gt;
File:Germaine de Staël by Vladimir Borovikovsky.png|Portrait of Anne Louise [[Germaine de Staël|Germaine de Staël-Holstein]]&lt;br /&gt;
File:Bildschirmfoto 2022-12-21 um 10.52.36.jpg|Detail from Theatre Bill, 1827&lt;br /&gt;
File:GER — BY – Oberbayern — Lkr. Rosenheim — Gemeinde Bad Endorf — Bad Endorf Ort — Rosenheimer Str. 6 (Volkstheater) Mattes 2021.jpg|[[Theatergesellschaft Bad Endorf]] (theatre association in Bad Endorf, Germany)&lt;br /&gt;
File:Herbert Gardner, Vanity Fair, 1886-04-07.jpg|Caricature of [[Herbert Gardner]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why should you get involved as a contributor? ==&lt;br /&gt;
For too long [[wikipedia:Amateur_theatre|amateur theatre]] has been undervalued in societies and cultures around the world. In most nations, the study of theatre has focussed almost exclusively on professional activity. However, amateur theatre has played a vital role in many theatrical ecologies and needs greater acknowledgement. It&#039;s only through documenting amateur theatrical activities and histories that the contribution of amateur theatre to these ecologies can begin to be recognised. &lt;br /&gt;
&lt;br /&gt;
== How to get an account ==&lt;br /&gt;
To contribute to the Amateur Theatre Wiki, you’ll need a user account. It’s easy to get started:&lt;br /&gt;
&lt;br /&gt;
# Send an email to &#039;&#039;&#039;[support.atwiki@lrz.uni-muenchen.de]&#039;&#039;&#039; with the subject line &amp;quot;Account Creation Request.&amp;quot;&lt;br /&gt;
# In your email, include:&lt;br /&gt;
#* Your username&lt;br /&gt;
#* A brief explanation of why you’d like to contribute&lt;br /&gt;
#* Any relevant affiliation with amateur theatre (optional)&lt;br /&gt;
&lt;br /&gt;
Once your request is reviewed, you will receive a reply with your login details.&lt;br /&gt;
&lt;br /&gt;
== How can you get involved? ==&lt;br /&gt;
Firstly, don&#039;t be scared! We&#039;ve made adding entries and editing the Amateur Theatre Wiki as easy as possible. Even if you have no experience editing websites before, this couldn&#039;t be easier.  &lt;br /&gt;
&lt;br /&gt;
Before you start, please make sure that you are aware of the [[Amateur Theatre Wiki:Community guidelines|community guidelines.]]&lt;br /&gt;
&lt;br /&gt;
Contact the Admin for account creation  &lt;br /&gt;
&lt;br /&gt;
To get you started, we&#039;ve created a number of helpful guides. Find out how to: &lt;br /&gt;
&lt;br /&gt;
* [[Amateur Theatre Wiki:Help#Creating new articles workflow|Create an entry]]&lt;br /&gt;
* [[mediawikiwiki:Help:Editing_pages|Edit an existing entry]] by using the [[mediawikiwiki:Help:VisualEditor/User_guide|Visual Editor]]&lt;br /&gt;
* [[Amateur Theatre Wiki:Help|Add a picture to an entry]]&lt;br /&gt;
&lt;br /&gt;
== How can you search the site? ==&lt;br /&gt;
At the top of the page you can enter your search terms into the bar at the top of the page, where it says &#039;Search Amateur Theatre Wiki&#039;. Alternatively, you might find it useful to search by category. Our [[Special:Categories|categories]] include:&lt;br /&gt;
&lt;br /&gt;
* [[:Category:People|People]]&lt;br /&gt;
* [[:Category:Venues|Venues]]&lt;br /&gt;
* [[:Category:Productions and Performances|Productions and Performances]]&lt;br /&gt;
* [[:Category:Clubs, Societies and Institutions|Clubs, Societies and Institutions]]&lt;br /&gt;
* [[:Category:Plays|Plays]]&lt;br /&gt;
* [[:Category:Music|Music]]&lt;br /&gt;
* [[:Category:Dance|Dance]]&lt;br /&gt;
&lt;br /&gt;
You might also want to search by country. &lt;br /&gt;
&lt;br /&gt;
== Example Entries ==&lt;br /&gt;
To give you an idea what sort of information you might find in the Amateur Theatre Wiki, here are some example entries for you to view:&lt;br /&gt;
* Example 1 - [[Robert Coates]] (Categories - People and Britain)&lt;br /&gt;
* Example 2 - [[Theatergesellschaft Urania]] (Category - Clubs, Societies and Institutions and Germany)&lt;br /&gt;
* Example 3 - [[Löfholmen’s Theatre Society]] (Categories - Clubs, Societies and Institutions and Sweden)&lt;br /&gt;
* Example 4 - [[Campden House]] (Categories - Venues and Britain)&lt;br /&gt;
&lt;br /&gt;
== Structured Data ==&lt;br /&gt;
The project has also produced a list of contemporary amateur theater associations which can be visualized as a map [https://w.wiki/86S$ here]. It contains (at the moment) only most of Germany&#039;s amateur theater scene organized by [[Bund Deutscher Amateurtheater (BDAT)|Bund Deutscher Amateurtheater]]. A full list of the amateur theaters can be found [https://w.wiki/86Td here].&lt;br /&gt;
&lt;br /&gt;
== About this Project ==&lt;br /&gt;
This site is part of the ERC Project &#039;&#039;&#039;P-Citizens&#039;&#039;&#039;, which researches Amateur Theatre Practice in Germany, France, Britain, Sweden and Switzerland from 1780-1850. For more information visit the [[Amateur Theatre Wiki:About|About-Page]] or the [https://www.p-citizens.gwi.uni-muenchen.de/ project website].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
File:Full emblem, black on transparent.png&lt;br /&gt;
File:LMU Muenchen Logo.svg&lt;br /&gt;
File:UniversityWarwickLogo.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>PCAdmin</name></author>
	</entry>
</feed>