<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://dunedb.com/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-VideoGallerySystem.js</id>
	<title>MediaWiki:Gadget-VideoGallerySystem.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://dunedb.com/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-VideoGallerySystem.js"/>
	<link rel="alternate" type="text/html" href="https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;action=history"/>
	<updated>2026-05-24T06:40:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;diff=918&amp;oldid=prev</id>
		<title>Operator at 15:34, 3 June 2025</title>
		<link rel="alternate" type="text/html" href="https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;diff=918&amp;oldid=prev"/>
		<updated>2025-06-03T15:34:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:34, 3 June 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l183&quot;&gt;Line 183:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 183:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	};&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	};&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/* === Video tab span → button, then flex them ===================== */&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		mw.loader.using([&#039;mediawiki.util&#039;, &#039;jquery&#039;]).done(function () {&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		  // Convert only if we haven’t already&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		  $(&#039;.video-tabs-nav&#039;).each(function () {&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    const nav = $(this);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    // 1-a) unwrap any stray &amp;lt;p&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    nav.children(&#039;p&#039;).contents().unwrap();&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    // 1-b) convert each &amp;lt;span.video-tab&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    nav.find(&#039;.video-tab&#039;).each(function () {&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      if (this.tagName.toLowerCase() === &#039;button&#039;) return; // already converted&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      const $span = $(this);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      const $btn  = $(&#039;&amp;lt;button&amp;gt;&#039;, {&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		        &#039;class&#039;   : $span.attr(&#039;class&#039;),&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		        &#039;data-tab&#039;: $span.data(&#039;tab&#039;),&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		        html      : $span.html()&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      });&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      $span.replaceWith($btn);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    });&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		  });&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		});&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Operator</name></author>
	</entry>
	<entry>
		<id>https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;diff=911&amp;oldid=prev</id>
		<title>Operator at 05:08, 3 June 2025</title>
		<link rel="alternate" type="text/html" href="https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;diff=911&amp;oldid=prev"/>
		<updated>2025-06-03T05:08:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:08, 3 June 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l182&quot;&gt;Line 182:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 182:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	};&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	};&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	/* === Video tab span → button, then flex them ===================== */&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		mw.loader.using([&#039;mediawiki.util&#039;, &#039;jquery&#039;]).done(function () {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		  // Convert only if we haven’t already&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		  $(&#039;.video-tabs-nav&#039;).each(function () {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    const nav = $(this);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    // 1-a) unwrap any stray &amp;lt;p&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    nav.children(&#039;p&#039;).contents().unwrap();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    // 1-b) convert each &amp;lt;span.video-tab&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    nav.find(&#039;.video-tab&#039;).each(function () {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      if (this.tagName.toLowerCase() === &#039;button&#039;) return; // already converted&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      const $span = $(this);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      const $btn  = $(&#039;&amp;lt;button&amp;gt;&#039;, {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		        &#039;class&#039;   : $span.attr(&#039;class&#039;),&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		        &#039;data-tab&#039;: $span.data(&#039;tab&#039;),&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		        html      : $span.html()&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      });&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		      $span.replaceWith($btn);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		    });&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		  });&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		});&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Initialize when DOM is ready&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Initialize when DOM is ready&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Operator</name></author>
	</entry>
	<entry>
		<id>https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;diff=904&amp;oldid=prev</id>
		<title>Operator at 03:38, 3 June 2025</title>
		<link rel="alternate" type="text/html" href="https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;diff=904&amp;oldid=prev"/>
		<updated>2025-06-03T03:38:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;amp;diff=904&amp;amp;oldid=885&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Operator</name></author>
	</entry>
	<entry>
		<id>https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;diff=885&amp;oldid=prev</id>
		<title>Operator: Created page with &quot;/* Video Gallery System – ResourceLoader gadget  * Dependencies: mediawiki.util, jquery  * Replicates functionality from local_test_version.html  */ ( function ( mw, $ ) { 	&#039;use strict&#039;;  	// ── Abort if the page has no video gallery markup ──────────────────────────────── 	if ( !$( &#039;.video-gallery-main-container&#039; ).length ) { 		return; 	}  	console.log(&#039;%c[VideoGallery] gadget loaded&#039;,&#039;color:teal;font...&quot;</title>
		<link rel="alternate" type="text/html" href="https://dunedb.com/index.php?title=MediaWiki:Gadget-VideoGallerySystem.js&amp;diff=885&amp;oldid=prev"/>
		<updated>2025-06-02T21:46:12Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;span class=&quot;autocomment&quot;&gt;Video Gallery System – ResourceLoader gadget  * Dependencies: mediawiki.util, jquery  * Replicates functionality from local_test_version.html: &lt;/span&gt; ( function ( mw, $ ) { 	&amp;#039;use strict&amp;#039;;  	// ── Abort if the page has no video gallery markup ──────────────────────────────── 	if ( !$( &amp;#039;.video-gallery-main-container&amp;#039; ).length ) { 		return; 	}  	console.log(&amp;#039;%c[VideoGallery] gadget loaded&amp;#039;,&amp;#039;color:teal;font...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Video Gallery System – ResourceLoader gadget&lt;br /&gt;
 * Dependencies: mediawiki.util, jquery&lt;br /&gt;
 * Replicates functionality from local_test_version.html&lt;br /&gt;
 */&lt;br /&gt;
( function ( mw, $ ) {&lt;br /&gt;
	&amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	// ── Abort if the page has no video gallery markup ────────────────────────────────&lt;br /&gt;
	if ( !$( &amp;#039;.video-gallery-main-container&amp;#039; ).length ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	console.log(&amp;#039;%c[VideoGallery] gadget loaded&amp;#039;,&amp;#039;color:teal;font-weight:bold&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	window.DuneVideoGallery = {&lt;br /&gt;
		// Store current video&lt;br /&gt;
		currentVideo: null,&lt;br /&gt;
		&lt;br /&gt;
		// Initialize the system&lt;br /&gt;
		init: function() {&lt;br /&gt;
			var self = this;&lt;br /&gt;
			&lt;br /&gt;
			console.log(&amp;#039;[VideoGallery] init() called&amp;#039;);&lt;br /&gt;
			&lt;br /&gt;
			// Set up event listeners&lt;br /&gt;
			self.setupEventListeners();&lt;br /&gt;
		},&lt;br /&gt;
		&lt;br /&gt;
		// Set up all event listeners&lt;br /&gt;
		setupEventListeners: function() {&lt;br /&gt;
			var self = this;&lt;br /&gt;
			&lt;br /&gt;
			// Tab navigation&lt;br /&gt;
			$(document).on(&amp;#039;click&amp;#039;, &amp;#039;.video-tab&amp;#039;, function(e) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				var tabName = $(this).data(&amp;#039;tab&amp;#039;);&lt;br /&gt;
				&lt;br /&gt;
				// Update active tab&lt;br /&gt;
				$(&amp;#039;.video-tab&amp;#039;).removeClass(&amp;#039;active&amp;#039;);&lt;br /&gt;
				$(this).addClass(&amp;#039;active&amp;#039;);&lt;br /&gt;
				&lt;br /&gt;
				// Update content&lt;br /&gt;
				$(&amp;#039;.video-tab-content&amp;#039;).removeClass(&amp;#039;active&amp;#039;);&lt;br /&gt;
				$(&amp;#039;[data-content=&amp;quot;&amp;#039; + tabName + &amp;#039;&amp;quot;]&amp;#039;).addClass(&amp;#039;active&amp;#039;);&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Video card clicks&lt;br /&gt;
			$(document).on(&amp;#039;click&amp;#039;, &amp;#039;.video-card&amp;#039;, function(e) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				self.loadVideo(this);&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Search functionality&lt;br /&gt;
			$(document).on(&amp;#039;input&amp;#039;, &amp;#039;.video-search-input&amp;#039;, function() {&lt;br /&gt;
				var query = $(this).val();&lt;br /&gt;
				self.searchVideos(query);&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			$(document).on(&amp;#039;click&amp;#039;, &amp;#039;.video-search-button&amp;#039;, function(e) {&lt;br /&gt;
				e.preventDefault();&lt;br /&gt;
				var query = $(&amp;#039;.video-search-input&amp;#039;).val();&lt;br /&gt;
				self.searchVideos(query);&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Enter key in search&lt;br /&gt;
			$(document).on(&amp;#039;keypress&amp;#039;, &amp;#039;.video-search-input&amp;#039;, function(e) {&lt;br /&gt;
				if (e.which === 13) {&lt;br /&gt;
					e.preventDefault();&lt;br /&gt;
					self.searchVideos($(this).val());&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&lt;br /&gt;
		// Load video into player&lt;br /&gt;
		loadVideo: function(videoCard) {&lt;br /&gt;
			var self = this;&lt;br /&gt;
			var $card = $(videoCard);&lt;br /&gt;
			&lt;br /&gt;
			// Update active card styling&lt;br /&gt;
			$(&amp;#039;.video-card&amp;#039;).removeClass(&amp;#039;active&amp;#039;);&lt;br /&gt;
			$card.addClass(&amp;#039;active&amp;#039;);&lt;br /&gt;
			&lt;br /&gt;
			// Get video data from data attributes&lt;br /&gt;
			var video = {&lt;br /&gt;
				id: $card.data(&amp;#039;video-id&amp;#039;),&lt;br /&gt;
				youtube_id: $card.data(&amp;#039;youtube-id&amp;#039;),&lt;br /&gt;
				title: $card.data(&amp;#039;title&amp;#039;),&lt;br /&gt;
				channel: $card.data(&amp;#039;channel&amp;#039;),&lt;br /&gt;
				author: $card.data(&amp;#039;author&amp;#039;),&lt;br /&gt;
				published_at: $card.data(&amp;#039;published&amp;#039;),&lt;br /&gt;
				duration: $card.data(&amp;#039;duration&amp;#039;),&lt;br /&gt;
				notes: $card.data(&amp;#039;notes&amp;#039;),&lt;br /&gt;
				internal_link: $card.data(&amp;#039;internal-link&amp;#039;)&lt;br /&gt;
			};&lt;br /&gt;
			&lt;br /&gt;
			console.log(&amp;#039;[VideoGallery] Loading video:&amp;#039;, video.title);&lt;br /&gt;
			&lt;br /&gt;
			// Store current video&lt;br /&gt;
			self.currentVideo = video;&lt;br /&gt;
			&lt;br /&gt;
			// Build player HTML&lt;br /&gt;
			var playerHTML = self.buildPlayerHTML(video);&lt;br /&gt;
			&lt;br /&gt;
			// Update player panel&lt;br /&gt;
			$(&amp;#039;#videoPlayerPanel&amp;#039;).html(playerHTML);&lt;br /&gt;
		},&lt;br /&gt;
		&lt;br /&gt;
		// Build player HTML&lt;br /&gt;
		buildPlayerHTML: function(video) {&lt;br /&gt;
		// Check if this is a music video&lt;br /&gt;
		var isMusicVideo = document.querySelector(&amp;#039;.music-video-gallery&amp;#039;) !== null;&lt;br /&gt;
		&lt;br /&gt;
		var html = &amp;#039;&amp;lt;div class=&amp;quot;video-embed-container&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
		&amp;#039;&amp;lt;iframe src=&amp;quot;https://www.youtube.com/embed/&amp;#039; + video.youtube_id + &amp;#039;?rel=0&amp;amp;modestbranding=1&amp;quot; &amp;#039; +&lt;br /&gt;
		&amp;#039;frameborder=&amp;quot;0&amp;quot; &amp;#039; +&lt;br /&gt;
		&amp;#039;allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;quot; &amp;#039; +&lt;br /&gt;
		&amp;#039;allowfullscreen&amp;gt;&amp;#039; +&lt;br /&gt;
		&amp;#039;&amp;lt;/iframe&amp;gt;&amp;#039; +&lt;br /&gt;
		&amp;#039;&amp;lt;/div&amp;gt;&amp;#039; +&lt;br /&gt;
		&amp;#039;&amp;lt;div class=&amp;quot;video-details-header&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
		&amp;#039;&amp;lt;h2 class=&amp;quot;video-main-title&amp;quot;&amp;gt;&amp;#039; + video.title + &amp;#039;&amp;lt;/h2&amp;gt;&amp;#039; +&lt;br /&gt;
		&amp;#039;&amp;lt;div class=&amp;quot;video-meta&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
		&amp;#039;&amp;lt;span class=&amp;quot;video-author&amp;quot;&amp;gt;&amp;#039; + (isMusicVideo ? &amp;#039;🎵&amp;#039; : &amp;#039;👤&amp;#039;) + &amp;#039; &amp;#039; + (video.author || video.channel) + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; +&lt;br /&gt;
		&amp;#039;&amp;lt;span class=&amp;quot;video-date&amp;quot;&amp;gt;📅 &amp;#039; + this.formatDate(video.published_at) + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; +&lt;br /&gt;
		&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
		&lt;br /&gt;
		// Add license badge for music videos&lt;br /&gt;
		if (isMusicVideo) {&lt;br /&gt;
		html += &amp;#039;&amp;lt;div class=&amp;quot;music-license-badge&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
		        &amp;#039;&amp;lt;span class=&amp;quot;badge-icon&amp;quot;&amp;gt;🆓&amp;lt;/span&amp;gt;&amp;#039; +&lt;br /&gt;
		        &amp;#039;&amp;lt;span&amp;gt;Suno AI Generated - Free to Use&amp;lt;/span&amp;gt;&amp;#039; +&lt;br /&gt;
		            &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                    html += &amp;#039;&amp;lt;/div&amp;gt;&amp;#039; +&lt;br /&gt;
                        &amp;#039;&amp;lt;div class=&amp;quot;video-notes-section&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
                        &amp;#039;&amp;lt;div class=&amp;quot;notes-header&amp;quot;&amp;gt;&amp;#039; + (isMusicVideo ? &amp;#039;Music Notes&amp;#039; : &amp;#039;Video Notes&amp;#039;) + &amp;#039;&amp;lt;/div&amp;gt;&amp;#039; +&lt;br /&gt;
                        &amp;#039;&amp;lt;div class=&amp;quot;notes-content&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
                        this.formatNotes(video.notes);&lt;br /&gt;
                    &lt;br /&gt;
                    // Add download link for music videos&lt;br /&gt;
                    if (isMusicVideo &amp;amp;&amp;amp; video.internal_link) {&lt;br /&gt;
                        html += &amp;#039;&amp;lt;a href=&amp;quot;/wiki/File:&amp;#039; + video.internal_link + &amp;#039;&amp;quot; class=&amp;quot;music-download-button&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
                            &amp;#039;&amp;lt;span&amp;gt;⬇&amp;lt;/span&amp;gt; Download MP3&amp;#039; +&lt;br /&gt;
                            &amp;#039;&amp;lt;/a&amp;gt;&amp;#039;;&lt;br /&gt;
                    }&lt;br /&gt;
                    &lt;br /&gt;
                    html += &amp;#039;&amp;lt;/div&amp;gt;&amp;#039; +&lt;br /&gt;
                        &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;;&lt;br /&gt;
                    &lt;br /&gt;
                    return html;&lt;br /&gt;
                },&lt;br /&gt;
		&lt;br /&gt;
		// Format date&lt;br /&gt;
		formatDate: function(dateStr) {&lt;br /&gt;
			if (!dateStr) return &amp;#039;&amp;#039;;&lt;br /&gt;
			var date = new Date(dateStr);&lt;br /&gt;
			return date.toLocaleDateString(&amp;#039;en-US&amp;#039;, { &lt;br /&gt;
				year: &amp;#039;numeric&amp;#039;, &lt;br /&gt;
				month: &amp;#039;short&amp;#039;, &lt;br /&gt;
				day: &amp;#039;numeric&amp;#039; &lt;br /&gt;
			});&lt;br /&gt;
		},&lt;br /&gt;
		&lt;br /&gt;
		// Format notes from markdown-style to HTML&lt;br /&gt;
		formatNotes: function(notes) {&lt;br /&gt;
			if (!notes) return &amp;#039;&amp;lt;p&amp;gt;No notes available for this video.&amp;lt;/p&amp;gt;&amp;#039;;&lt;br /&gt;
			&lt;br /&gt;
			// Convert headers&lt;br /&gt;
			notes = notes.replace(/### (.+)/g, &amp;#039;&amp;lt;h3&amp;gt;$1&amp;lt;/h3&amp;gt;&amp;#039;);&lt;br /&gt;
			&lt;br /&gt;
			// Convert lists&lt;br /&gt;
			var lines = notes.split(&amp;#039;\n&amp;#039;);&lt;br /&gt;
			var inList = false;&lt;br /&gt;
			var formatted = [];&lt;br /&gt;
			&lt;br /&gt;
			lines.forEach(function(line) {&lt;br /&gt;
				if (line.startsWith(&amp;#039;- &amp;#039;)) {&lt;br /&gt;
					if (!inList) {&lt;br /&gt;
						formatted.push(&amp;#039;&amp;lt;ul&amp;gt;&amp;#039;);&lt;br /&gt;
						inList = true;&lt;br /&gt;
					}&lt;br /&gt;
					formatted.push(&amp;#039;&amp;lt;li&amp;gt;&amp;#039; + line.substring(2) + &amp;#039;&amp;lt;/li&amp;gt;&amp;#039;);&lt;br /&gt;
				} else {&lt;br /&gt;
					if (inList &amp;amp;&amp;amp; line.trim() === &amp;#039;&amp;#039;) {&lt;br /&gt;
						formatted.push(&amp;#039;&amp;lt;/ul&amp;gt;&amp;#039;);&lt;br /&gt;
						inList = false;&lt;br /&gt;
					}&lt;br /&gt;
					formatted.push(line);&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			if (inList) formatted.push(&amp;#039;&amp;lt;/ul&amp;gt;&amp;#039;);&lt;br /&gt;
			&lt;br /&gt;
			return formatted.join(&amp;#039;\n&amp;#039;).replace(/\n\n/g, &amp;#039;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;#039;).replace(/^/, &amp;#039;&amp;lt;p&amp;gt;&amp;#039;).replace(/$/, &amp;#039;&amp;lt;/p&amp;gt;&amp;#039;);&lt;br /&gt;
		},&lt;br /&gt;
		&lt;br /&gt;
		// Search functionality&lt;br /&gt;
		searchVideos: function(query) {&lt;br /&gt;
			query = query.toLowerCase();&lt;br /&gt;
			&lt;br /&gt;
			$(&amp;#039;.video-card&amp;#039;).each(function() {&lt;br /&gt;
				var $card = $(this);&lt;br /&gt;
				var title = $card.data(&amp;#039;title&amp;#039;).toLowerCase();&lt;br /&gt;
				var channel = $card.data(&amp;#039;channel&amp;#039;).toLowerCase();&lt;br /&gt;
				&lt;br /&gt;
				if (title.includes(query) || channel.includes(query)) {&lt;br /&gt;
					$card.show();&lt;br /&gt;
				} else {&lt;br /&gt;
					$card.hide();&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
			&lt;br /&gt;
			// Hide empty sections&lt;br /&gt;
			$(&amp;#039;.video-section&amp;#039;).each(function() {&lt;br /&gt;
				var $section = $(this);&lt;br /&gt;
				var visibleCards = $section.find(&amp;#039;.video-card:visible&amp;#039;).length;&lt;br /&gt;
				$section.toggle(visibleCards &amp;gt; 0);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	// Initialize when DOM is ready&lt;br /&gt;
	$(function() {&lt;br /&gt;
		console.log(&amp;#039;[VideoGallery] DOM ready – calling init()&amp;#039;);&lt;br /&gt;
		DuneVideoGallery.init();&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
}( mediaWiki, jQuery ) );&lt;/div&gt;</summary>
		<author><name>Operator</name></author>
	</entry>
</feed>