MediaWiki:Versions.js — различия между версиями
Материал из RPGround Wiki
EvilCat (обсуждение | вклад) (Создана новая страница размером →Это переключатель версий.) |
EvilCat (обсуждение | вклад) |
||
| (не показаны 2 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
/* Это переключатель версий. */ | /* Это переключатель версий. */ | ||
| + | |||
| + | 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); | ||
| + | } | ||
Текущая версия на 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);
}