https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Module%3AContentious_topics_talk_banner%2Fsandbox
Module:Contentious topics talk banner/sandbox - Revision history
2025-06-13T19:55:47Z
Revision history for this page on the wiki
MediaWiki 1.45.0-wmf.5
https://en.wikipedia.org/w/index.php?title=Module:Contentious_topics_talk_banner/sandbox&diff=1294008906&oldid=prev
HouseBlaster: dipping my toes into the fray
2025-06-05T01:20:57Z
<p>dipping my toes into the fray</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 01:20, 5 June 2025</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 40:</td>
<td colspan="2" class="diff-lineno">Line 40:</td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local args = require('Module:Arguments').getArgs(frame)</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local args = require('Module:Arguments').getArgs(frame)</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local topics = collectTopics(args)</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local topics = collectTopics(args)</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> local partialTopics</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local restrictions = {} -- A list of which restrictions are enabled for easier iteration</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local restrictions = {} -- A list of which restrictions are enabled for easier iteration</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local restrictionFlags = {} -- Track which restrictions are enabled, as a set</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local restrictionFlags = {} -- Track which restrictions are enabled, as a set</div></td>
</tr>
<tr>
<td colspan="2" class="diff-lineno">Line 230:</td>
<td colspan="2" class="diff-lineno">Line 231:</td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> --[[</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> Now build some further information collapse boxes</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> We get the content of each collapse box from Wikipedia:Contentious topics/[Topic]/Further information</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> --]]</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> </div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> </div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Now build the messageBox</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Now build the messageBox</div></td>
</tr>
</table>
HouseBlaster
https://en.wikipedia.org/w/index.php?title=Module:Contentious_topics_talk_banner/sandbox&diff=1293619371&oldid=prev
HouseBlaster: test
2025-06-02T19:19:12Z
<p>test</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 19:19, 2 June 2025</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 69:</td>
<td colspan="2" class="diff-lineno">Line 69:</td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local function alwaysAddRestriction(restriction)</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local function alwaysAddRestriction(restriction)</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> restrictionFlags[restriction] = true</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> restrictionFlags[restriction] = true</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker"><a class="mw-diff-movedpara-right" title="Paragraph was moved. Click to jump to old location." href="#movedpara_17_6_lhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_1_0_rhs"></a> end</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker"><a class="mw-diff-movedpara-right" title="Paragraph was moved. Click to jump to old location." href="#movedpara_17_0_lhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_1_1_rhs"></a> </div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker"><a class="mw-diff-movedpara-right" title="Paragraph was moved. Click to jump to old location." href="#movedpara_17_1_lhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_1_2_rhs"></a> -- <ins style="font-weight: bold; text-decoration: none;">Helper</ins> to add a category</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker"><a class="mw-diff-movedpara-right" title="Paragraph was moved. Click to jump to old location." href="#movedpara_17_2_lhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_1_3_rhs"></a> local function addCategory(cat)</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker"><a class="mw-diff-movedpara-right" title="Paragraph was moved. Click to jump to old location." href="#movedpara_17_3_lhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_1_4_rhs"></a> if cat then</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker"><a class="mw-diff-movedpara-right" title="Paragraph was moved. Click to jump to old location." href="#movedpara_17_4_lhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_1_5_rhs"></a> categories = categories .. '[[Category:' .. cat .. '|' .. currentTitleObject.text .. ']]'</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker"><a class="mw-diff-movedpara-right" title="Paragraph was moved. Click to jump to old location." href="#movedpara_17_5_lhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_1_6_rhs"></a> end</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> </div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> </div></td>
</tr>
<tr>
<td colspan="2" class="diff-lineno">Line 94:</td>
<td colspan="2" class="diff-lineno">Line 101:</td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> </div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> </div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Add the protection level</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Add the protection level</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> if yesno(args.protection, true) then</div></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> protectionLevel = subjectTitleObject.protectionLevels["edit"][1]</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> <del style="font-weight: bold; text-decoration: none;">if </del>protectionLevel <del style="font-weight: bold; text-decoration: none;">then</del></div></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <ins style="font-weight: bold; text-decoration: none;"> </ins>protectionLevel <ins style="font-weight: bold; text-decoration: none;">= subjectTitleObject.protectionLevels["edit"][1]</ins></div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> if protectionLevel then</div></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> -- we have page protection</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"> </del> --<del style="font-weight: bold; text-decoration: none;"> so</del> we <del style="font-weight: bold; text-decoration: none;">check</del> <del style="font-weight: bold; text-decoration: none;">if</del> <del style="font-weight: bold; text-decoration: none;">ECR is</del> <del style="font-weight: bold; text-decoration: none;">active</del>, and <del style="font-weight: bold; text-decoration: none;">if</del> <del style="font-weight: bold; text-decoration: none;">so</del> <del style="font-weight: bold; text-decoration: none;">only</del> <del style="font-weight: bold; text-decoration: none;">care about full protection</del></div></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> </ins> -- we <ins style="font-weight: bold; text-decoration: none;">have</ins> <ins style="font-weight: bold; text-decoration: none;">a</ins> <ins style="font-weight: bold; text-decoration: none;">|protection=foo</ins> <ins style="font-weight: bold; text-decoration: none;">parameter</ins>, and <ins style="font-weight: bold; text-decoration: none;">the</ins> <ins style="font-weight: bold; text-decoration: none;">page</ins> <ins style="font-weight: bold; text-decoration: none;">is</ins> <ins style="font-weight: bold; text-decoration: none;">protected</ins></div></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"> </del> if restrictionFlags["ECR"] then</div></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"> </ins> if restrictionFlags["ECR"] then</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> -- handle ECR with protection correctly</div></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> if protectionLevel == "full" then alwaysAddRestriction("full") end</div></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <ins style="font-weight: bold; text-decoration: none;"> </ins> if protectionLevel == "full" then alwaysAddRestriction("full") end</div></td>
</tr>
<tr>
<td class="diff-marker" data-marker="−"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> else</div></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <ins style="font-weight: bold; text-decoration: none;"> </ins> else</div></td>
</tr>
<tr>
<td class="diff-marker"><a class="mw-diff-movedpara-left" title="Paragraph was moved. Click to jump to new location." href="#movedpara_15_1_rhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_14_0_lhs"></a> alwaysAddRestriction(protectionLevel)</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> -- no ECR, so just add the protection as normal</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker"><a class="mw-diff-movedpara-right" title="Paragraph was moved. Click to jump to old location." href="#movedpara_14_0_lhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_15_1_rhs"></a> <ins style="font-weight: bold; text-decoration: none;"> </ins> alwaysAddRestriction(protectionLevel)</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> manualRestrictions = true</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> else</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> -- we have a |protection=foo parameter, but the page is *not* protected</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty diff-side-deleted"></td>
<td class="diff-marker" data-marker="+"></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> addCategory(categoryDatabase['protection-error'])</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> end</div></td>
</tr>
<tr>
<td colspan="2" class="diff-lineno">Line 132:</td>
<td colspan="2" class="diff-lineno">Line 146:</td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Determines whether we should use the string "article" or "page"</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Determines whether we should use the string "article" or "page"</div></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local articleOrPage = currentTitleObject:inNamespaces(1) and "article" or "page"</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> local articleOrPage = currentTitleObject:inNamespaces(1) and "article" or "page"</div></td>
</tr>
<tr>
<td class="diff-marker"><a class="mw-diff-movedpara-left" title="Paragraph was moved. Click to jump to new location." href="#movedpara_1_1_rhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_17_0_lhs"></a> </div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker"><a class="mw-diff-movedpara-left" title="Paragraph was moved. Click to jump to new location." href="#movedpara_1_2_rhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_17_1_lhs"></a> -- <del style="font-weight: bold; text-decoration: none;">helper</del> to add a category</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker"><a class="mw-diff-movedpara-left" title="Paragraph was moved. Click to jump to new location." href="#movedpara_1_3_rhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_17_2_lhs"></a> local function addCategory(cat)</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker"><a class="mw-diff-movedpara-left" title="Paragraph was moved. Click to jump to new location." href="#movedpara_1_4_rhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_17_3_lhs"></a> if cat then</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker"><a class="mw-diff-movedpara-left" title="Paragraph was moved. Click to jump to new location." href="#movedpara_1_5_rhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_17_4_lhs"></a> categories = categories .. '[[Category:' .. cat .. '|' .. currentTitleObject.text .. ']]'</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker"><a class="mw-diff-movedpara-left" title="Paragraph was moved. Click to jump to new location." href="#movedpara_1_6_rhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_17_5_lhs"></a> end</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker"><a class="mw-diff-movedpara-left" title="Paragraph was moved. Click to jump to new location." href="#movedpara_1_0_rhs">⚫</a></td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><a name="movedpara_17_6_lhs"></a> end</div></td>
<td colspan="2" class="diff-empty diff-side-added"></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td>
</tr>
<tr>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Makes a bullet point for a given contentious topic</div></td>
<td class="diff-marker"></td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> -- Makes a bullet point for a given contentious topic</div></td>
</tr>
</table>
HouseBlaster
https://en.wikipedia.org/w/index.php?title=Module:Contentious_topics_talk_banner/sandbox&diff=1293618031&oldid=prev
HouseBlaster: Create sandbox version of Module:Contentious topics talk banner
2025-06-02T19:09:24Z
<p>Create sandbox version of <a href="/wiki/Module:Contentious_topics_talk_banner" title="Module:Contentious topics talk banner">Module:Contentious topics talk banner</a></p>
<p><b>New page</b></p><div>local p = {}<br />
local TableTools = require('Module:TableTools')<br />
local yesno = require('Module:Yesno')<br />
local setToList = require('Module:Set to list')<br />
local restrictionsDatabase = mw.loadJsonData("Template:Contentious topics/Additional restrictions.json")<br />
local restrictionsDefinition = mw.loadJsonData("Template:Contentious topics/Restrictions definition.json")<br />
local standardSet = mw.loadJsonData("Template:Contentious topics/Standard set.json")<br />
local categoryDatabase = mw.loadJsonData("Template:Contentious topics/Category database.json")<br />
<br />
local function collectTopics(args)<br />
local seen = {}<br />
local topics = {}<br />
<br />
local function add(value)<br />
if value then<br />
value = mw.text.trim(value)<br />
if value ~= '' and not seen[value] then<br />
seen[value] = true<br />
table.insert(topics, value)<br />
end<br />
end<br />
end<br />
<br />
-- Primary topic params<br />
add(args.topic)<br />
add(args.t)<br />
add(args[1])<br />
<br />
-- Additional topics via numbered forms<br />
for i = 2, 10 do<br />
add(args[i])<br />
add(args['t' .. i])<br />
add(args['topic' .. i])<br />
end<br />
<br />
return topics<br />
end<br />
<br />
function p.main(frame)<br />
local args = require('Module:Arguments').getArgs(frame)<br />
local topics = collectTopics(args)<br />
local restrictions = {} -- A list of which restrictions are enabled for easier iteration<br />
local restrictionFlags = {} -- Track which restrictions are enabled, as a set<br />
local currentTitleObject = mw.title.getCurrentTitle()<br />
local subjectTitleObject = currentTitleObject.subjectPageTitle<br />
local underRestrictions -- a boolean for whether there are any active restrictions<br />
local articleOrPage -- the string "article" (if a mainspace page) or "page" (if not)<br />
local protectionLevel -- the edit protection level<br />
local messageBody -- the text within the message box<br />
local messageBox -- the message box itself<br />
local categories = '' -- initialize categories<br />
local manualRestrictions = false -- have we set any restrictions via |parameters?<br />
local section = yesno(args.section) or yesno(args.relatedcontent) -- whether we are a section<br />
<br />
--[[<br />
This area sets active restrictions<br />
The end goal is to get the restrictions variable into a nice, neat, sorted list of which restrictions are active<br />
This is a somewhat intense process<br />
--]]<br />
<br />
-- Helpers to add a restriction if it's active and hasn't been added yet<br />
local function maybeAddRestriction(restriction)<br />
if yesno(args[restriction]) then<br />
restrictionFlags[restriction] = true<br />
manualRestrictions = true<br />
end<br />
end<br />
<br />
local function alwaysAddRestriction(restriction)<br />
restrictionFlags[restriction] = true<br />
end<br />
<br />
-- Add the always-available restrictions<br />
for _, r in ipairs(standardSet) do<br />
maybeAddRestriction(r)<br />
end<br />
<br />
-- Topic-based restrictions<br />
for _, topic in ipairs(topics) do<br />
local topicWide = restrictionsDatabase["topic-wide"][topic]<br />
if topicWide then<br />
for _, restriction in ipairs(topicWide) do<br />
alwaysAddRestriction(restriction)<br />
end<br />
end<br />
<br />
local additional = restrictionsDatabase["additional-available"][topic]<br />
if additional then<br />
for _, restriction in ipairs(additional) do<br />
maybeAddRestriction(restriction)<br />
end<br />
end<br />
end<br />
<br />
-- Add the protection level<br />
protectionLevel = subjectTitleObject.protectionLevels["edit"][1]<br />
if protectionLevel then<br />
-- we have page protection<br />
-- so we check if ECR is active, and if so only care about full protection<br />
if restrictionFlags["ECR"] then<br />
if protectionLevel == "full" then alwaysAddRestriction("full") end<br />
else<br />
alwaysAddRestriction(protectionLevel)<br />
end<br />
end<br />
<br />
--[[<br />
Clear duplicate restrictions (e.g. 0RR and 1RR; consensus-required is stronger than BRD)<br />
--]]<br />
<br />
-- if 0RR, then clear 1RR<br />
if restrictionFlags["0RR"] then<br />
restrictionFlags["1RR"] = nil<br />
end<br />
<br />
-- clear BRD if consensus-required is enabled<br />
if restrictionFlags["consensus-required"] then<br />
restrictionFlags["BRD"] = nil<br />
end<br />
<br />
-- and finally, convert our set to a list to make it easy to work with<br />
<br />
restrictions = setToList(restrictionFlags)<br />
<br />
--[[<br />
Restrictions are now all set. Here, we add additional helper functions and variables necessary for generating the banner<br />
--]]<br />
<br />
-- Check whether any of the added restrictions are enabled<br />
underRestrictions = #restrictions > 0 or args.other<br />
<br />
-- Determines whether we should use the string "article" or "page"<br />
local articleOrPage = currentTitleObject:inNamespaces(1) and "article" or "page"<br />
<br />
-- helper to add a category<br />
local function addCategory(cat)<br />
if cat then<br />
categories = categories .. '[[Category:' .. cat .. '|' .. currentTitleObject.text .. ']]'<br />
end<br />
end<br />
<br />
-- Makes a bullet point for a given contentious topic<br />
local function makeTopicBulletPoint(code)<br />
topicBlurb = frame:expandTemplate{ title = "Contentious topics/list", args = { scope=code } }<br />
if topicBlurb == '' then<br />
addCategory(categoryDatabase['bad-topic'])<br />
return ''<br />
else <br />
return '* <b>' .. topicBlurb .. '</b>\n'<br />
end<br />
end<br />
<br />
-- Makes a restriction bullet point<br />
local function makeRestrictionBulletPoint(code)<br />
local def = restrictionsDefinition[code]<br />
return def and ('* <b>' .. def .. '</b>\n') or ''<br />
end<br />
<br />
--[[<br />
Place into an error category if not given a contentious topic code<br />
--]]<br />
if #topics == 0 then<br />
addCategory(categoryDatabase['no-topic'])<br />
end<br />
<br />
--[[<br />
Begin building the messageBody<br />
--]]<br />
<br />
messageBody = '<b>The [[Wikipedia:Contentious topics|contentious topics]] procedure applies to this '<br />
.. articleOrPage .. '.</b>'<br />
.. (section and (' Parts of this ' .. articleOrPage .. ' relate ') or (' This ' .. articleOrPage .. ' relates '))<br />
<br />
if #topics > 1 then<br />
messageBody = messageBody .. 'to the following contentious topics:\n'<br />
for _, topic in ipairs(topics) do<br />
messageBody = messageBody .. makeTopicBulletPoint(topic)<br />
end<br />
else<br />
local topicBlurb = frame:expandTemplate{ <br />
title = "Contentious topics/list",<br />
args = { scope=topics[1] } }<br />
if topicBlurb ~= '' then<br />
messageBody = messageBody .. 'to <b>'<br />
.. topicBlurb<br />
.. '</b>, a contentious topic.</p>'<br />
else<br />
addCategory(categoryDatabase['bad-topic'])<br />
end<br />
end<br />
<br />
if underRestrictions then<br />
messageBody = '<p style="margin-top:0"><strong style="text-transform: uppercase;">Warning: active arbitration remedies</strong></p>'<br />
.. messageBody<br />
.. '<p style="text-decoration:underline; text-align:center; font-size:120%;">The following restrictions apply to everyone editing this ' .. articleOrPage .. ':</p>\n'<br />
for _, restriction in ipairs(restrictions) do<br />
messageBody = messageBody .. makeRestrictionBulletPoint(restriction)<br />
addCategory(categoryDatabase[restriction])<br />
end<br />
if args.other then<br />
messageBody = messageBody .. '* <b>' .. args.other .. '</b>\n'<br />
addCategory(categoryDatabase["other"])<br />
end<br />
end<br />
<br />
messageBody = messageBody .. ' Editors are advised to familiarise themselves with the [[Wikipedia:Contentious topics|contentious topics procedures]] before editing this page.'<br />
<br />
if not yesno(args.brief) then<br />
messageBody = messageBody .. ' Editors who repeatedly or seriously fail to adhere to the [[WP:Five pillars|purpose of Wikipedia]], any expected [[WP:Etiquette|standards of behaviour]], '<br />
.. 'or any [[WP:List of policies|normal editorial process]] may be blocked or restricted by an administrator.'<br />
end<br />
<br />
if section then<br />
messageBody = messageBody .. '<p>If it is unclear which parts of the page are related to this contentious topic, the content in question should be marked within the wiki text by an invisible comment.'<br />
.. 'If no comment is present, please ask an administrator for assistance. If in doubt it is better to assume that the content is covered.</p>'<br />
end<br />
<br />
if underRestrictions then<br />
if args['placed-date'] then<br />
messageBody = messageBody .. '<p>Restrictions placed: ' .. require('Module:Date')._Date(args['placed-date']):text() .. '</p>'<br />
elseif manualRestrictions then<br />
addCategory(categoryDatabase['no-date'])<br />
end<br />
end<br />
<br />
<br />
--[[<br />
Now build some further information collapse boxes<br />
We get the content of each collapse box from Wikipedia:Contentious topics/[Topic]/Further information<br />
--]]<br />
<br />
-- Now build the messageBox<br />
<br />
messageBox = require('Module:Message box').main("tmbox", {<br />
["type"] = underRestrictions and "delete" or "content",<br />
["small"] = yesno(args.small),<br />
["image"] = "[[File:Commons-emblem-"<br />
.. (underRestrictions and "hand" or "issue")<br />
.. ".svg|"<br />
.. (yesno(args.small) and "30" or "40")<br />
.. "px]]",<br />
["text"] = messageBody<br />
})<br />
<br />
-- If ECR is enabled, prepend the ECR warning<br />
if restrictionFlags["ECR"] then<br />
messageBox = frame:expandTemplate{ <br />
title = "Template:Contentious topics/talk notice/ECR warning", <br />
args = { section = section and "yes" or "", small = args.small}} <br />
.. messageBox<br />
<br />
-- Hard code for [[WP:BER]]<br />
if TableTools.inArray(topics, "a-i") then<br />
addCategory("Wikipedia pages subject to the extended confirmed restriction related to the Arab-Israeli conflict")<br />
end<br />
end<br />
<br />
--[[<br />
Categories!!!<br />
We set the restriction categories back in the if underRestrictions loop<br />
to avoid looping through the restrictions twice. So we only need to do some cleanup and handle nocat<br />
<br />
Because nocat is only for the ultra-rare case of demonstration,<br />
manually clearing the categories is more efficient<br />
--]]<br />
<br />
if yesno(args.nocat) then<br />
categories = ''<br />
else<br />
addCategory(categoryDatabase["all"])<br />
end<br />
<br />
return messageBox .. categories<br />
end<br />
<br />
return p</div>
HouseBlaster