MediaWiki:Common.js: відмінності між версіями
Перейти до навігації
Перейти до пошуку
Vox (обговорення | внесок) Скасування редагування № 16974 користувача Vox (обговорення) |
Vox (обговорення | внесок) Скасування редагування № 16979 користувача Vox (обговорення) |
||
| Рядок 132: | Рядок 132: | ||
{ | { | ||
noLogo(); | noLogo(); | ||
} | |||
/** | |||
* Ajoute un menu déroulant permettant de choisir un jeu de caractères spéciaux | |||
* Les caractères spéciaux sont définis dans Mediawiki:Edittools | |||
*/ | |||
function addCharSubsetMenu() { | |||
var specialchars = document.getElementById('specialcharsets'); | |||
if (!specialchars) return; | |||
// Construction du menu de selection | |||
var charSubsetSelect = document.createElement("select"); | |||
charSubsetSelect.setAttribute("style", "display:inline"); | |||
charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); }; | |||
// Ajout des options au menu | |||
var p = document.getElementById('specialcharsets').getElementsByTagName('p'); | |||
for (var i = 0; i < p.length ; i++) { | |||
var opt = document.createElement("option"); | |||
var txt = document.createTextNode(p[i].title); | |||
opt.appendChild(txt); | |||
charSubsetSelect.appendChild(opt); | |||
} | |||
specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]); | |||
/* default subset - try to use a cookie some day */ | |||
chooseCharSubset(0); | |||
} | |||
/** | |||
* Affichage du jeu de caractères sélectionné | |||
*/ | |||
function chooseCharSubset(index) { | |||
var p = document.getElementById('specialcharsets').getElementsByTagName('p'); | |||
for (var i = 0; i < p.length ; i++) { | |||
// Initialisation du jeu de caractères sélectionné | |||
if (i == index) { | |||
initializeCharSubset(p[i]); | |||
} | |||
// Affichage du jeu sélectionné, masquage des autres | |||
p[i].style.display = i == index ? 'inline' : 'none'; | |||
p[i].style.visibility = i == index ? 'visible' : 'hidden'; | |||
} | |||
} | |||
/** | |||
* Initialisation du jeu de caractères sélectionné | |||
* Paramètre : paragraphe contenant le jeu à initialiser. Initialise tous les | |||
* caractères contenus dans les sous-spans du paragraphe | |||
*/ | |||
function initializeCharSubset(p) { | |||
// recherche des sous-elements de type span à traiter | |||
var spans = p.getElementsByTagName("span"); | |||
if (!spans) return; | |||
// regexp pour echapper les caractères JS spéciaux : \ et ' | |||
var re = new RegExp("(\\\\|')", "g"); | |||
// gestion du caractère d'échappement '\' | |||
var escapeRe = new RegExp("[^\\\\](\\\\\\\\)*\\\\$", "g"); | |||
var unescapeRe = new RegExp("\\\\\\\\", "g"); | |||
// traitement des spans du paragraphe | |||
for (var j = 0; j < spans.length; j++) { | |||
// span deja traité | |||
if (spans[j].childNodes.length == 0 || spans[j].childNodes[0].nodeType != 3) continue; | |||
// On parse le contenu du span | |||
var chars = spans[j].childNodes[0].nodeValue.split(" "); | |||
for (var k = 0; k < chars.length; k++) { | |||
var a = document.createElement("a"); | |||
var tags = chars[k]; | |||
// regroupement des mots se terminant par un espace protégé par un \ | |||
while (k < chars.length && chars[k].match(escapeRe)) { | |||
k++; | |||
tags = tags.substr(0, tags.length - 1) + " " + chars[k]; | |||
} | |||
// création du lien insertTag(tagBegin, tagEnd, defaultValue) en protegeant les caractères JS \ et ' | |||
tags = (tags.replace(unescapeRe, "\\")).split("+"); | |||
var tagBegin = tags[0].replace(re, "\\$1"); | |||
var tagEnd = tags.length > 1 ? tags[1].replace(re, "\\$1") : ""; | |||
var defaultValue = tags.length > 2 ? tags[2].replace(re, "\\$1") : ""; | |||
a.href = "javascript:insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "')"; | |||
//a.href="#"; | |||
//eval("a.onclick = function() { insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "'); return false; }"); | |||
a.appendChild(document.createTextNode((tagBegin + tagEnd).replace(unescapeRe, "\\"))); | |||
spans[j].appendChild(a); | |||
spans[j].appendChild(document.createTextNode(" ")); | |||
} | |||
// suppression de l'ancien contenu | |||
spans[j].removeChild(spans[j].firstChild); | |||
} | |||
} | |||
addOnloadHook(addCharSubsetMenu); | |||
/** | |||
* Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant | |||
* paramètres : | |||
* - nom du jeu de caractères | |||
* - contenu HTML. Les caractères spéciaux doivent être dans des spans | |||
* exemple : "caractères : <span>â ê î ô û</span>" | |||
*/ | |||
function addSpecialCharsetHTML(title, charsHTML) { | |||
var specialchars = document.getElementById('specialcharsets'); | |||
if (!specialchars) return; | |||
// Ajout d'un nouvel item au menu déroulant | |||
var select = specialchars.getElementsByTagName("select")[0]; | |||
var opt = document.createElement("option"); | |||
opt.appendChild(document.createTextNode(title)); | |||
select.appendChild(opt); | |||
// Ajout des caractères spéciaux. Les liens seront initialisé par initializeCharSubset() | |||
// lors de la sélection | |||
var specialcharsets = document.getElementById('specialcharsets'); | |||
var p = document.createElement("p"); | |||
p.style.display = "none"; | |||
p.innerHTML = charsHTML; | |||
specialcharsets.appendChild(p); | |||
} | } | ||
Версія за 20:22, 11 червня 2011
if (document.URL.indexOf("action=edit") > 0 || document.URL.indexOf("action=submit") > 0)
{
if (wgCanonicalNamespace != "Special")
{
document.write('<script type="text/javascript" src="'
+ 'http://ukrmemoria.com/w/index.php?title=MediaWiki:Onlyifediting.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
addOnloadHook(function(){
if (mwEditButtons.length < 3) return;
mwEditButtons[0].imageFile = 'http://upload.wikimedia.org/wikipedia/commons/f/fa/Button_bold_ukr.png';
mwEditButtons[1].imageFile = 'http://upload.wikimedia.org/wikipedia/commons/f/f3/Button_italic_ukr.png';
mwEditButtons[2].imageFile = 'http://upload.wikimedia.org/wikipedia/commons/0/03/Button_internal_link_ukr.png';
})
}
}
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-7117465-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = 'http://www.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
function ukrbash()
{
if (document.getElementById('ukrbash')) (function(){var script=document.createElement('script');script.type='text/javascript';script.async=true;script.src='http://i.ukrbash.org/export/random.js';var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(script,s)})();
}
addOnloadHook(ukrbash);
/** Collapsible tables *********************************************************
*
* Description: Allows tables to be collapsed, showing only the header. See
* http://www.mediawiki.org/wiki/Manual:Collapsible_tables.
* Maintainers: [[**MAINTAINERS**]]
*/
var autoCollapse = 2;
var collapseCaption = 'сховати';
var expandCaption = 'показати';
function collapseTable( tableIndex ) {
var Button = document.getElementById( 'collapseButton' + tableIndex );
var Table = document.getElementById( 'collapsibleTable' + tableIndex );
if ( !Table || !Button ) {
return false;
}
var Rows = Table.rows;
if ( Button.firstChild.data == collapseCaption ) {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = 'none';
}
Button.firstChild.data = expandCaption;
} else {
for ( var i = 1; i < Rows.length; i++ ) {
Rows[i].style.display = Rows[0].style.display;
}
Button.firstChild.data = collapseCaption;
}
}
function createCollapseButtons() {
var tableIndex = 0;
var NavigationBoxes = new Object();
var Tables = document.getElementsByTagName( 'table' );
for ( var i = 0; i < Tables.length; i++ ) {
if ( hasClass( Tables[i], 'collapsible' ) ) {
/* only add button and increment count if there is a header row to work with */
var HeaderRow = Tables[i].getElementsByTagName( 'tr' )[0];
if( !HeaderRow ) continue;
var Header = HeaderRow.getElementsByTagName( 'th' )[0];
if( !Header ) continue;
NavigationBoxes[tableIndex] = Tables[i];
Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
var Button = document.createElement( 'span' );
var ButtonLink = document.createElement( 'a' );
var ButtonText = document.createTextNode( collapseCaption );
Button.className = 'collapseButton'; // Styles are declared in MediaWiki:Common.css
ButtonLink.style.color = Header.style.color;
ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
ButtonLink.setAttribute( 'href', "javascript:collapseTable(" + tableIndex + ");" );
ButtonLink.appendChild( ButtonText );
Button.appendChild( document.createTextNode( '[' ) );
Button.appendChild( ButtonLink );
Button.appendChild( document.createTextNode( ']' ) );
Header.insertBefore( Button, Header.childNodes[0] );
tableIndex++;
}
}
for ( var i = 0; i < tableIndex; i++ ) {
if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
collapseTable( i );
}
}
}
addOnloadHook( createCollapseButtons );
/** Test if an element has a certain class **************************************
*
* Description: Uses regular expressions and caching for better performance.
* Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
*/
var hasClass = (function() {
var reCache = {};
return function( element, className ) {
return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
};
})();
/* {{nologo}} */
function noLogo() { if(document.getElementById('nologo'))
document.getElementById('p-logo').style.display = 'none';
}
addOnloadHook(onPageInit);
function onPageInit()
{
noLogo();
}
/**
* Ajoute un menu déroulant permettant de choisir un jeu de caractères spéciaux
* Les caractères spéciaux sont définis dans Mediawiki:Edittools
*/
function addCharSubsetMenu() {
var specialchars = document.getElementById('specialcharsets');
if (!specialchars) return;
// Construction du menu de selection
var charSubsetSelect = document.createElement("select");
charSubsetSelect.setAttribute("style", "display:inline");
charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };
// Ajout des options au menu
var p = document.getElementById('specialcharsets').getElementsByTagName('p');
for (var i = 0; i < p.length ; i++) {
var opt = document.createElement("option");
var txt = document.createTextNode(p[i].title);
opt.appendChild(txt);
charSubsetSelect.appendChild(opt);
}
specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);
/* default subset - try to use a cookie some day */
chooseCharSubset(0);
}
/**
* Affichage du jeu de caractères sélectionné
*/
function chooseCharSubset(index) {
var p = document.getElementById('specialcharsets').getElementsByTagName('p');
for (var i = 0; i < p.length ; i++) {
// Initialisation du jeu de caractères sélectionné
if (i == index) {
initializeCharSubset(p[i]);
}
// Affichage du jeu sélectionné, masquage des autres
p[i].style.display = i == index ? 'inline' : 'none';
p[i].style.visibility = i == index ? 'visible' : 'hidden';
}
}
/**
* Initialisation du jeu de caractères sélectionné
* Paramètre : paragraphe contenant le jeu à initialiser. Initialise tous les
* caractères contenus dans les sous-spans du paragraphe
*/
function initializeCharSubset(p) {
// recherche des sous-elements de type span à traiter
var spans = p.getElementsByTagName("span");
if (!spans) return;
// regexp pour echapper les caractères JS spéciaux : \ et '
var re = new RegExp("(\\\\|')", "g");
// gestion du caractère d'échappement '\'
var escapeRe = new RegExp("[^\\\\](\\\\\\\\)*\\\\$", "g");
var unescapeRe = new RegExp("\\\\\\\\", "g");
// traitement des spans du paragraphe
for (var j = 0; j < spans.length; j++) {
// span deja traité
if (spans[j].childNodes.length == 0 || spans[j].childNodes[0].nodeType != 3) continue;
// On parse le contenu du span
var chars = spans[j].childNodes[0].nodeValue.split(" ");
for (var k = 0; k < chars.length; k++) {
var a = document.createElement("a");
var tags = chars[k];
// regroupement des mots se terminant par un espace protégé par un \
while (k < chars.length && chars[k].match(escapeRe)) {
k++;
tags = tags.substr(0, tags.length - 1) + " " + chars[k];
}
// création du lien insertTag(tagBegin, tagEnd, defaultValue) en protegeant les caractères JS \ et '
tags = (tags.replace(unescapeRe, "\\")).split("+");
var tagBegin = tags[0].replace(re, "\\$1");
var tagEnd = tags.length > 1 ? tags[1].replace(re, "\\$1") : "";
var defaultValue = tags.length > 2 ? tags[2].replace(re, "\\$1") : "";
a.href = "javascript:insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "')";
//a.href="#";
//eval("a.onclick = function() { insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "'); return false; }");
a.appendChild(document.createTextNode((tagBegin + tagEnd).replace(unescapeRe, "\\")));
spans[j].appendChild(a);
spans[j].appendChild(document.createTextNode(" "));
}
// suppression de l'ancien contenu
spans[j].removeChild(spans[j].firstChild);
}
}
addOnloadHook(addCharSubsetMenu);
/**
* Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
* paramètres :
* - nom du jeu de caractères
* - contenu HTML. Les caractères spéciaux doivent être dans des spans
* exemple : "caractères : <span>â ê î ô û</span>"
*/
function addSpecialCharsetHTML(title, charsHTML) {
var specialchars = document.getElementById('specialcharsets');
if (!specialchars) return;
// Ajout d'un nouvel item au menu déroulant
var select = specialchars.getElementsByTagName("select")[0];
var opt = document.createElement("option");
opt.appendChild(document.createTextNode(title));
select.appendChild(opt);
// Ajout des caractères spéciaux. Les liens seront initialisé par initializeCharSubset()
// lors de la sélection
var specialcharsets = document.getElementById('specialcharsets');
var p = document.createElement("p");
p.style.display = "none";
p.innerHTML = charsHTML;
specialcharsets.appendChild(p);
}