<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://bradleymonk.com/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AUIElements.js</id>
	<title>MediaWiki:UIElements.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://bradleymonk.com/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AUIElements.js"/>
	<link rel="alternate" type="text/html" href="https://bradleymonk.com/wiki/index.php?title=MediaWiki:UIElements.js&amp;action=history"/>
	<updated>2026-04-09T17:02:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://bradleymonk.com/wiki/index.php?title=MediaWiki:UIElements.js&amp;diff=409&amp;oldid=prev</id>
		<title>Monakhos: Created page with &quot;// &lt;source lang=&quot;javascript&quot;&gt; /*   Read UI elements from the DOM. Used by the upload form rewrite.     Author: User:Lupo, March 2008   License: Quadruple licensed GFDL, GP...&quot;</title>
		<link rel="alternate" type="text/html" href="https://bradleymonk.com/wiki/index.php?title=MediaWiki:UIElements.js&amp;diff=409&amp;oldid=prev"/>
		<updated>2013-01-12T08:17:46Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;// &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt; /*   Read UI elements from the DOM. Used by the upload form rewrite.     Author: &lt;a href=&quot;/wiki/index.php?title=User:Lupo&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Lupo (page does not exist)&quot;&gt;User:Lupo&lt;/a&gt;, March 2008   License: Quadruple licensed GFDL, GP...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
  Read UI elements from the DOM. Used by the upload form rewrite.&lt;br /&gt;
 &lt;br /&gt;
  Author: [[User:Lupo]], March 2008&lt;br /&gt;
  License: Quadruple licensed GFDL, GPL, LGPL and Creative Commons Attribution 3.0 (CC-BY-3.0)&lt;br /&gt;
 &lt;br /&gt;
  Choose whichever license of these you like best :-)&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
var UIElements = {&lt;br /&gt;
&lt;br /&gt;
  defaultLanguage : &amp;#039;en&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
  getElementsByClassName : function (elem, tag, classes) {&lt;br /&gt;
    // getElementsByClassName in wikibits.js has been changed in a contract-breaking way and&lt;br /&gt;
    // newly won&amp;#039;t work anymore with regexp strings or arrays of strings passed as classes.&lt;br /&gt;
    // We need this functionality here, so we have our own copy of this function.&lt;br /&gt;
    var arrElements = (tag == &amp;quot;*&amp;quot; &amp;amp;&amp;amp; elem.all) ? elem.all : elem.getElementsByTagName (tag);&lt;br /&gt;
    var arrReturnElements = new Array();&lt;br /&gt;
    var arrRegExpClassNames = new Array();&lt;br /&gt;
&lt;br /&gt;
    if (typeof classes == &amp;quot;object&amp;quot;) {&lt;br /&gt;
      for (var i=0; i &amp;lt; classes.length; i++){&lt;br /&gt;
        arrRegExpClassNames[arrRegExpClassNames.length] =&lt;br /&gt;
          new RegExp(&amp;quot;(^|\\s)&amp;quot; + classes[i].replace(/\-/g, &amp;quot;\\-&amp;quot;) + &amp;quot;(\\s|$)&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      arrRegExpClassNames[arrRegExpClassNames.length] =&lt;br /&gt;
        new RegExp(&amp;quot;(^|\\s)&amp;quot; + classes.replace(/\-/g, &amp;quot;\\-&amp;quot;) + &amp;quot;(\\s|$)&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var this_elem;&lt;br /&gt;
    var matches_all;&lt;br /&gt;
&lt;br /&gt;
    for (var j=0; j &amp;lt; arrElements.length; j++){&lt;br /&gt;
      this_elem = arrElements[j];&lt;br /&gt;
      matches_all = true;&lt;br /&gt;
      for (var k=0; k &amp;lt; arrRegExpClassNames.length; k++){&lt;br /&gt;
        if (!arrRegExpClassNames[k].test (this_elem.className)) {&lt;br /&gt;
          matches_all = false;&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      if (matches_all) {&lt;br /&gt;
        arrReturnElements[arrReturnElements.length] = this_elem;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    return (arrReturnElements)&lt;br /&gt;
  },&lt;br /&gt;
  &lt;br /&gt;
  load : function (container_name, items, tag, repository, default_language, doc)&lt;br /&gt;
  { &lt;br /&gt;
    doc = doc || document;&lt;br /&gt;
&lt;br /&gt;
    function add_item (item, lang)&lt;br /&gt;
    {&lt;br /&gt;
      var classes = item.className.split (&amp;#039; &amp;#039;);&lt;br /&gt;
      var node = null;&lt;br /&gt;
      if (item.ownerDocument != document &amp;amp;&amp;amp; document.importNode)&lt;br /&gt;
        node = document.importNode (item, true);&lt;br /&gt;
      else&lt;br /&gt;
        node = item.cloneNode (true);&lt;br /&gt;
      UIElements.setEntry (classes[0], repository, node, lang, classes.slice (1));&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if (!container_name || container_name.length == 0 || container_name == &amp;#039;*&amp;#039;) return repository;&lt;br /&gt;
    var base = getElementsByClassName (doc, &amp;#039;div&amp;#039;, container_name);&lt;br /&gt;
    if (!base || base.length == 0) return repository;&lt;br /&gt;
    &lt;br /&gt;
    if (!items || items.length == 0)&lt;br /&gt;
      items = [&amp;#039;wp\\S*&amp;#039;];&lt;br /&gt;
    else if (items &amp;amp;&amp;amp; typeof (items) == &amp;#039;string&amp;#039;)&lt;br /&gt;
      items = [items];&lt;br /&gt;
    if (!repository) repository = UIElements.emptyRepository (default_language);&lt;br /&gt;
    &lt;br /&gt;
    for (var i = 0; i &amp;lt; base.length; i++) {&lt;br /&gt;
      var b = base[i];&lt;br /&gt;
      var lang = (b.getAttribute (&amp;#039;lang&amp;#039;) || repository.defaultLanguage).replace(/-/g, &amp;#039;_&amp;#039;);&lt;br /&gt;
      for (var j = 0; j &amp;lt; items.length; j++) {&lt;br /&gt;
        var nodes = UIElements.getElementsByClassName (b, tag || &amp;#039;*&amp;#039;, items[j]);&lt;br /&gt;
        if (nodes) {&lt;br /&gt;
          for (var k = 0; k &amp;lt; nodes.length; k++) add_item (nodes[k], lang);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    return repository;&lt;br /&gt;
  },&lt;br /&gt;
  &lt;br /&gt;
  getEntry : function (id, repository, lang, selector)&lt;br /&gt;
  {&lt;br /&gt;
    if (repository &amp;amp;&amp;amp; repository[id]) {&lt;br /&gt;
      if (!lang || lang.length == 0)&lt;br /&gt;
        lang = repository.defaultLanguage || UIElements.defaultLanguage;&lt;br /&gt;
      lang = lang.replace (/-/g, &amp;#039;_&amp;#039;);&lt;br /&gt;
      if (repository[id][lang]) {&lt;br /&gt;
        if (selector == &amp;#039;*&amp;#039;)&lt;br /&gt;
          return repository[id][lang];&lt;br /&gt;
        else if (!selector || selector.length == 0)&lt;br /&gt;
          return repository[id][lang]._default;&lt;br /&gt;
        else&lt;br /&gt;
          return repository[id][lang][selector.replace (/-/g, &amp;#039;_&amp;#039;)];&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    return null;&lt;br /&gt;
  },&lt;br /&gt;
  &lt;br /&gt;
  setEntry : function (id, repository, value, lang, selectors)&lt;br /&gt;
  {&lt;br /&gt;
    if (!repository) return null;&lt;br /&gt;
    if (!lang) lang = repository.defaultLanguage;&lt;br /&gt;
    lang = lang.replace (/-/g, &amp;#039;_&amp;#039;);&lt;br /&gt;
    id   = id.replace(/-/g, &amp;#039;_&amp;#039;);&lt;br /&gt;
    if (!repository[id]) repository[id] = new Object ();&lt;br /&gt;
    if (!repository[id][lang]) repository[id][lang] = new Object ();&lt;br /&gt;
    if (!selectors || selectors.length == 0)&lt;br /&gt;
      repository[id][lang]._default = value;&lt;br /&gt;
    else {&lt;br /&gt;
      for (var k = 0; k &amp;lt; selectors.length; k++) {&lt;br /&gt;
        if (!selectors[k] || selectors[k].length == 0)&lt;br /&gt;
          repository[id][lang]._default = value;&lt;br /&gt;
        else&lt;br /&gt;
          repository[id][lang][selectors[k].replace (/-/g, &amp;#039;_&amp;#039;)] = value;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &lt;br /&gt;
  emptyRepository : function (default_language)&lt;br /&gt;
  {&lt;br /&gt;
    var repository = new Object ();&lt;br /&gt;
    repository.defaultLanguage = default_language || UIElements.defaultLanguage;&lt;br /&gt;
    return repository;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
} // end UIElements&lt;br /&gt;
// &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Monakhos</name></author>
	</entry>
</feed>