MediaWiki:Versions.js — различия между версиями

Материал из RPGround Wiki
Перейти к: навигация, поиск
 
Строка 1: Строка 1:
 
/* Это переключатель версий. */
 
/* Это переключатель версий. */
  
function getInnerSpans($source, $class)
+
var $vers_glossary=new Array(), $vers_current=new Array();
 +
 
 +
function setVersionsButtons()
 
{
 
{
  var $list=$source.childNodes, $result=new Array(), $rec=new Array();
+
  var $holder=getInnerTags(document.body, 'versionswitcher', 'div');
  for (var $i=0; $i<$list.length; $i++)
+
if (!$holder) return true;
 +
var $buttons, $words;
 +
  for (var $h=0; $h<$holder.length; $h++)
 
  {
 
  {
   if (($list[$i].tagName=='SPAN')&&(hasClass($list[$i], $class))) $result[$result.length]=$list[$i];
+
   $vers_current[$h]=0;
   $rec=getInnerSpans($list[$i], $class);
+
  $vers_glossary[$h]=new Array();
   if ($rec) $result=$result.concat($rec);
+
  $buttons=getInnerTags($holder[$h], 'versionbutton', 'span');
 +
  for (var $b=0; $b<$buttons.length; $b++)
 +
  {
 +
  $buttons[$b].id='var'+$h+'-'+$b;
 +
  if ($buttons[$b].addEventListener) $buttons[$b].addEventListener('click', pickVariant, false);
 +
  else if ($buttons[$b].attachEvent)$buttons[$b].attachEvent('onclick', pickVariant);
 +
  }
 +
   $buttons=getInnerTags($holder[$h], 'wordvariant', 'span');
 +
   for (var $b=0; $b<$buttons.length; $b++)
 +
  {
 +
  $words=$buttons[$b].innerHTML;
 +
  $vers_glossary[$h][$b]=$words.split(',');
 +
  }
 
  }
 
  }
  return $result;
+
  var $nop=true;
 
}
 
}
  
 +
function pickVariant(e)
 +
{
 +
if (!e) var e = window.event;
 +
var $button;
 +
if (e.target) $button = e.target;
 +
else if (e.srcElement) $button = e.srcElement;
 +
if ($button.tagName=='U') $button=$button.parentNode;
 +
var $id=$button.id.substr(3);
 +
$id=$id.split('-');
 +
var $group=$id[0], $pick=$id[1];
 +
if ($vers_current[$group]==$pick) return true;
 +
var $varianted=getInnerTags(document.body, 'varianted', 'span');
 +
for ($v=0; $v<$varianted.length; $v++)
 +
{
 +
  for ($c=0; $c<12; $c++)
 +
  {
 +
  if (hasClass($varianted[$v], 'case'+$c))
 +
  {
 +
    if ($varianted[$v].innerHTML==$vers_glossary[$group][$vers_current[$group]][$c]) $varianted[$v].innerHTML=$vers_glossary[$group][$pick][$c];
 +
    else $varianted[$v].innerHTML=ucfirst($vers_glossary[$group][$pick][$c]);
 +
  }
 +
  }
 +
}
 +
$vers_current[$group]=$pick;
 +
}
  
/* Установка кнопок */
+
function ucfirst (str) {
function setVersionsButtons()
+
    // Makes a string's first character uppercase 
{
+
    //
var $holder=document.getElementById('version_switcher');
+
    // version: 1008.1718
var $buttons=getInnerSpans($holder, 'versionbutton');
+
    // discuss at: http://phpjs.org/functions/ucfirst    // +  original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
' $holder.innerHTML='<br /> <u><span id="showspoilers'+$defhidden+'" style="cursor:crosshair;">Показать</span></u> <u><span id="hidespoilers" style="cursor:crosshair;">Скрыть</span></u>';
+
    // +  bugfixed by: Onno Marsman
 +
    // +  improved by: Brett Zamir (http://brett-zamir.me)
 +
    // *    example 1: ucfirst('kevin van zonneveld');
 +
    // *    returns 1: 'Kevin van zonneveld'   str += '';
 +
    var f = str.charAt(0).toUpperCase();
 +
    return f + str.substr(1);
 
}
 
}
setVersionsButtons();
 

Текущая версия на 22:55, 30 августа 2010

/* Это переключатель версий. */

var $vers_glossary=new Array(), $vers_current=new Array();

function setVersionsButtons()
{
 var $holder=getInnerTags(document.body, 'versionswitcher', 'div');
 if (!$holder) return true;
 var $buttons, $words;
 for (var $h=0; $h<$holder.length; $h++)
 {
  $vers_current[$h]=0;
  $vers_glossary[$h]=new Array();
  $buttons=getInnerTags($holder[$h], 'versionbutton', 'span');
  for (var $b=0; $b<$buttons.length; $b++)
  {
   $buttons[$b].id='var'+$h+'-'+$b;
   if ($buttons[$b].addEventListener) $buttons[$b].addEventListener('click', pickVariant, false);
   else if ($buttons[$b].attachEvent)$buttons[$b].attachEvent('onclick', pickVariant);  
  }
  $buttons=getInnerTags($holder[$h], 'wordvariant', 'span');
  for (var $b=0; $b<$buttons.length; $b++)
  {
   $words=$buttons[$b].innerHTML;
   $vers_glossary[$h][$b]=$words.split(',');
  }
 }
 var $nop=true;
}

function pickVariant(e)
{
 if (!e) var e = window.event;
 var $button;
 if (e.target) $button = e.target;
 else if (e.srcElement) $button = e.srcElement;
 if ($button.tagName=='U') $button=$button.parentNode;
 var $id=$button.id.substr(3);
 $id=$id.split('-');
 var $group=$id[0], $pick=$id[1];
 if ($vers_current[$group]==$pick) return true;
 var $varianted=getInnerTags(document.body, 'varianted', 'span');
 for ($v=0; $v<$varianted.length; $v++)
 {
  for ($c=0; $c<12; $c++)
  {
   if (hasClass($varianted[$v], 'case'+$c))
   {
    if ($varianted[$v].innerHTML==$vers_glossary[$group][$vers_current[$group]][$c]) $varianted[$v].innerHTML=$vers_glossary[$group][$pick][$c];
    else $varianted[$v].innerHTML=ucfirst($vers_glossary[$group][$pick][$c]);
   }
  }
 }
 $vers_current[$group]=$pick;
}

function ucfirst (str) {
    // Makes a string's first character uppercase  
    // 
    // version: 1008.1718
    // discuss at: http://phpjs.org/functions/ucfirst    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: ucfirst('kevin van zonneveld');
    // *     returns 1: 'Kevin van zonneveld'    str += '';
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}