მედიავიკი:Common.js

ვიკიწიგნებიდან

შენიშვნა: შენახვის შემდეგ შესაძლოა დაგჭირდეთ ბრაუზერის ქეშის გაწმენდა ცვლილებების სანახავად. Mozilla / Firefox / Safari: დააჭირეთ Shift Reload-ზე დაწკაპებისას, ან დააჭირეთ Ctrl-Shift-R (Cmd-Shift-R Apple Mac-ზე); IE: დააჭირეთ Ctrl Refresh-ზე დაწკაპებისას, ან დააჭირეთ Ctrl-F5; Konqueror:: მხოლოდ დააწკაპეთ Reload ღილაკს, ან დააჭირეთ F5; Opera შესაძლოა საჭირო გახდეს ქეშის სრულიად გაწმენდა Tools→Preferences-დან.

/* ძველი ვერსია*/

function LinkFA() 
 {
     if ( document.getElementById( "p-lang" ) ) {
         var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );
 
         for ( var i = 0; i < InterwikiLinks.length; i++ ) {
             if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) ) {
                 InterwikiLinks[i].className += " FA"
                 InterwikiLinks[i].title = "ამ სტატიას მიენიჭა რჩეულის სტატუსი";
             }
         }
     }
 }

$(LinkFA);

// ============================================================
 // BEGIN Dynamic Navigation Bars (experimantal)
 
 // set up the words in your language
 var NavigationBarHide = '[ დამალვა ]';
 var NavigationBarShow = '[ ჩვენება ]';
 
 // set up max count of Navigation Bars on page,
 // if there are more, all will be hidden
 // NavigationBarShowDefault = 0; // all bars will be hidden
 // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
 var NavigationBarShowDefault = 1;
 
 
 // shows and hides content and picture (if available) of navigation bars
 // Parameters:
 //     indexNavigationBar: the index of navigation bar to be toggled
 function toggleNavigationBar(indexNavigationBar)
 {
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
    if (!NavFrame || !NavToggle) {
        return false;
    }
 
    // if shown now
    if (NavToggle.firstChild.data == NavigationBarHide) {
        for (
                var NavChild = NavFrame.firstChild;
                NavChild != null;
                NavChild = NavChild.nextSibling
            ) {
            if (NavChild.className == 'NavPic') {
                NavChild.style.display = 'none';
            }
            if (NavChild.className == 'NavContent') {
                NavChild.style.display = 'none';
            }
        }
    NavToggle.firstChild.data = NavigationBarShow;
 
    // if hidden now
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
        for (
                var NavChild = NavFrame.firstChild;
                NavChild != null;
                NavChild = NavChild.nextSibling
            ) {
            if (NavChild.className == 'NavPic') {
                NavChild.style.display = 'block';
            }
            if (NavChild.className == 'NavContent') {
                NavChild.style.display = 'block';
            }
        }
    NavToggle.firstChild.data = NavigationBarHide;
    }
 }
 
 // adds show/hide-button to navigation bars
 function createNavigationBarToggleButton()
 {
    var indexNavigationBar = 0;
    // iterate over all < div >-elements
    for(
            var i=0; 
            NavFrame = document.getElementsByTagName("div")[i]; 
            i++
        ) {
        // if found a navigation bar
        if (NavFrame.className == "NavFrame") {
 
            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
            
            var NavToggleText = document.createTextNode(NavigationBarHide);
            NavToggle.appendChild(NavToggleText);
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
            for(
              var j=0; 
              j < NavFrame.childNodes.length; 
              j++
            ) {
              if (NavFrame.childNodes[j].className == "NavHead") {
                NavFrame.childNodes[j].appendChild(NavToggle);
              }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
    // if more Navigation Bars found than Default: hide all
    if (NavigationBarShowDefault < indexNavigationBar) {
        for(
                var i=1; 
                i<=indexNavigationBar; 
                i++
        ) {
            toggleNavigationBar(i);
        }
    }
 
 }
 
 $(createNavigationBarToggleButton);
 
 // END Dynamic Navigation Bars
 // ============================================================

var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1));

if (mw.config.get('wgIsMainPage') && !isDiff) {
	mw.util.addCSS('#lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; }');

	var mpSmallEnabled;
	var mpMinWidth = 700;

	function mainPageTransform()
	{
        	var mpContentEl = document.getElementById("bodyContent");
        	var mpBrowseEl = document.getElementById("EnWpMpBrowse");
        	var mpContainEl = document.getElementById("EnWpMpBrowseContainer");
        	var mpMarginEl = document.getElementById("EnWpMpMargin");
        	var mpEl = document.getElementById("EnWpMainPage");

        	if (!mpContentEl || !mpBrowseEl || !mpContainEl || !mpMarginEl || !mpEl)
                	return;

        	if (!mpSmallEnabled && mpContentEl.offsetWidth < mpMinWidth) {
                	mpContainEl.insertBefore(mpBrowseEl, mpContainEl.firstChild);
                	mpBrowseEl.className = "EnWpMpBrowseBottom";
                	mpMarginEl.style.marginRight = 0;
                	mpSmallEnabled = true;
        	}
        	else if (mpSmallEnabled && mpContentEl.offsetWidth > mpMinWidth)
        	{
                	mpEl.insertBefore(mpBrowseEl, mpEl.firstChild);
                	mpBrowseEl.className = "EnWpMpBrowseRight";
                	mpMarginEl.style.marginRight = "13.8em";
                	mpSmallEnabled = false;
        	}
	}
	mw.loader.using('mediawiki.util', function () {
		$(document).ready(mainPageTransform);
		$(window).resize(mainPageTransform);
	})

}

// ============================================================
// სექციის რედაქტირების ბმულის დაპატარავება/დაახლოება ქვესათაურთან
/*
* moveEditsection
* ეს სკრიპტი აახლოებს ბმულს [რედაქტირება] სექციის სათაურთან და ამცირებს;
* ინგლისურში [edit] მოკლეა, ქართულში კი გრძელია და ვიზუალურად აუმჯობესებს.
* დადებითი ტესტი განხორციელდა: Firefox 1.0, Opera 8.0, Internet Explorer 6.0
*
* dbenzhuser (de:Benutzer:Dbenzhuser)
*/
setModifySectionStyle = function()
{
try {
        if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return;
        var spans = document.getElementsByTagName("span");
        for (var s = 0; s < spans.length; ++s) {
                var span = spans[s];
                if (span.className == "editsection") {
                        span.style.fontSize = "xx-small";
                        span.style.fontWeight = "normal";
                        span.style.cssFloat = span.style.styleFloat = "none";
                        span.className = "editsectionmoved";
                        span.parentNode.appendChild(document.createTextNode(" "));
                        span.parentNode.appendChild(span);
                }
        }
} catch (e) { /* something went wrong */ }
}
$(setModifySectionStyle);

// ===========================================================
// რედაქტირების ბმულის გადატანის სკრიპტის დასასრული
// ===========================================================

// ===========================================================
// ცხრილის შემქმნელი
// ===========================================================

/**
 *
 * შექმენი ცხრილი მედიავიკის სინტაქსის მეშვეობით
 * @version: 0.1
 */
 
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine, exfield, align, padding)
{
        var code = "\n";

        if (padding==false) padding=0;
        else if (padding==true) padding=1;

        if (styleHeader==1) {
                code += '{| border="' + border + '" align="' + align + '" style="text-align: center; background: #FFFFFF;"\n';
                code += "|'''ცხრილის სახელი'''\n";
                code += '{{' + 'სტანდარტული ცხრილი|' + padding + '}}\n';
        } else {
                code += '{| border="1" align="' + align + '" style="text-align: center; background: #FFFFFF;"\n';
                code += '|+\n';
        }
        
        if (exfield==true) code += '!\n';
        
        for (var i=1;i<nbCol+1;i++) code += '! style="background: #ddffdd;"|ველი ' + i + '\n';

        var items = 0;
        for (var j=0;j<nbRow;j++) {
                if ((j+1)%2==0 && styleLine==1 && exfield==true) {
                        items+=1;
                        code += '|-bgcolor="#EFEFEF"\n'
                        code += '! style="background: #ffdddd;"|დასახელება ' + items + '\n';
                }
                   else if ((j+1)%2==0 && styleLine==1 && exfield==false) {
                        code += '|-bgcolor="#EFEFEF"\n'
                }  else if (exfield==true) {    
                        items+=1;       
                        code += '|-----\n'
                        code += '! style="background: #ffdddd;"|დასახელება ' + items + '\n';
                }
                  else if (exfield==false) {            
                        code += '|-----\n'
                }
                
                for (var i=0;i<nbCol;i++) code += '| ელემენტი\n';
        }
        
        if (styleHeader==1) code += '|}\n';
        else code += '|+\n';
        code += '|}\n';
        insertTags('','', code); 
}

/**
 *
 * გახსენი მცირე ფანჯარა ცხრილის პარამეტრების მისათითებლად.
 * სვეტების და ხაზების რაოდენობა შეიძლება შეიცვალოს. ზოგიერთი დამატებითი
 * პარამეტრი მსგავსია ფრანგულ ვიკიზე არსებული თარგების
 * @version: 0.1
 */
 
function popupTable()
{
  var popup = window.open('','name','height=450,width=500,scrollbars=yes');
  
  javaCode =  '<script type="text\/javascript">function insertCode(){';
  javaCode += 'var row = parseInt(document.paramForm.inputRow.value); '
  javaCode += 'var col = parseInt(document.paramForm.inputCol.value); '
  javaCode += 'var bord = parseInt(document.paramForm.inputBorder.value); '
  javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; '
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; '
  javaCode += 'var exfield = document.paramForm.inputItems.checked; '
  javaCode += 'var align = document.paramForm.inputAlign.value; '
  javaCode += 'var padding = document.paramForm.inputPad.checked; '
  javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine,exfield,align,padding); '
  javaCode += "alert('ცხრილი შეიქმნა! ტექსტი \"სტანდარტული ცხრილი\" უნდა დარჩეს.'); "
  javaCode += 'window.close(); '
  javaCode += '}<\/script>';
  
  popup.document.write('<html><head><title>შექმენი ცხრილი</title>');
  popup.document.write(javaCode); 
  popup.document.write('</head><body>');
  popup.document.write('<p>შეიყვანე ცხრილის პარამეტრები ქვემოთ: </p>');
  popup.document.write('<form name="paramForm">');
  popup.document.write('ცხრილის განლაგება: <input type="text" name="inputAlign" value="center" ><p>');
  popup.document.write('რიგების რაოდენობა: <input type="text" name="inputRow" value="3" ><p>');
  popup.document.write('სვეტების რაოდენობა: <input type="text" name="inputCol" value="3" ><p>');
  popup.document.write('<input type="checkbox" name="inputHeader" checked="1" > ცხრილის სათაური<p>');
  popup.document.write('ჩარჩოს სიგანე: <input type="text" name="inputBorder" value="1" > ' + ' ');
  popup.document.write(' ' + '<input type="checkbox" name="inputPad" > გარეველი<p>');
  popup.document.write('ცვლადი რუხი ზოლები: <input type="checkbox" name="inputLine" checked="1" ><p>');
  popup.document.write('სვეტის ელემენტი: <input type="checkbox" name="inputItems" ><p>');
  popup.document.write('</form">');
  popup.document.write('<i>უპირობოდ ცხრილი შეიცავს ერთი რიგის ველებს.</i><p>');
  popup.document.write('მონიშნეთ "სვეტის ელემენტი" ცხრილისთვის ველის რიგის <i>და</i> სვეტის ელემენტის მისაცემად.</i><p>');
  popup.document.write('შენიშვნა:<i> "ჩარჩოს სიგანეს" ან "გარეველს" ვერ მიუთითებთ თუ "ცხრილის სათაური" არ არის მონიშნული.</i><p>');
  popup.document.write('<p><a href="javascript:insertCode()"> ჩასვი ცხრილი</a>     |');
  popup.document.write('    <a href="javascript:self.close()">გაუქმება (ფანჯრის დახურვა)</a></p>');
  popup.document.write('</body></html>');
  popup.document.close();
}

//მსგავსია ფუნქციის /w/skins/common/wikibits.js 
function marque_tab()
{
 var toolbar = document.getElementById('toolbar');
 if (!toolbar) return false;
 
 var textbox = document.getElementById('wpTextbox1');
 if (!textbox) return false;
 
 if (!document.selection && textbox.selectionStart == null)
 return false;
 
 var image = document.createElement("img");
 image.width = 23;
 image.height = 22;
 image.src = '//upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png';
 image.border = 0;
 image.alt = 'Table';
 image.title = 'ცხრილის შექმნა';
 image.style.cursor = "pointer";
 image.onclick = function() {
   popupTable();
   return false;
 }
 toolbar.appendChild(image);
}

$(marque_tab);

// ===========================================================
// დასასრული - დამატებითი ხელსაწყოები რედაქტირების ფანჯარაზე
// ===========================================================

// ===========================================================
// IP მომხმარებლები წინასწარ გადახედვის გარეშე გვერდს ვერ ინახავენ
// ===========================================================

// Force IP to preview before saving changes.
// Copyright Marc Mongenet, 2006
function forcePreview()
{
        if (mw.config.get('wgUserName') != null || mw.config.get('wgAction') != "edit") return;
        var saveButton = document.getElementById("wpSave");
        if (!saveButton) return;
//        if (location.search.search(/&action=edit/) == -1) return;
        saveButton.disabled = true;
        saveButton.value = "გვერდის შენახვა (გთხოვთ ჯერ გამოიყენოთ წინასწარ გადახედვა)";
        saveButton.style.fontWeight = "normal";
        document.getElementById("wpPreview").style.fontWeight = "bold";
}

$(forcePreview);

// ====================================================================
// დასასრული - IP მომხმარებლები წინასწარ გადახედვის გარეშე გვერდს ვერ ინახავენ
// ====================================================================

// ===========================================================
// კოდი თარგისთვის "ფოტოგალერეა"
// ===========================================================
/*** CODE FOR TEMPLATE:Scroll gallery ***/
function toggleImage(group, remindex, shwindex) {
  document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none";
  document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline";
}
function ImageGroup(){
	if (document.URL.match(/printable/g)) return;
	var bc=document.getElementById("bodyContent");
	var divs=bc.getElementsByTagName("div");
	var i = 0, j = 0;
	var units, search;
	var currentimage;
	var UnitNode;
	for (i = 0; i < divs.length ; i++) {
		if (divs[i].className != "ImageGroup") continue;
		UnitNode=undefined;
		search=divs[i].getElementsByTagName("div");
		for (j = 0; j < search.length ; j++) {
			if (search[j].className != "ImageGroupUnits") continue;
			UnitNode=search[j];
			break;
		}
		if (UnitNode==undefined) continue;
		units=Array();
		for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
			var temp = UnitNode.childNodes[j];
			if (['center', 'mw-halign-center'].some(function(className) { return temp.classList.contains(className); })) { units.push(temp); }
		}
		var wrap;
		for (j = 0 ; j < units.length ; j++) {
			currentimage=units[j];
			wrap = document.createElement('div');
			wrap.id = "ImageGroupsGr" + i + "Im" + j;
			currentimage.parentNode.insertBefore(wrap, currentimage);
			wrap.appendChild(currentimage);
			var imghead = document.createElement("div");
			var leftlink;
			var rightlink;
			if (j != 0) {
				leftlink = document.createElement("a");
				leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
				leftlink.innerHTML="◀";
			} else {
				leftlink = document.createElement("span");
				leftlink.innerHTML="&nbsp;";
			}
			if (j != units.length - 1) {
				rightlink = document.createElement("a");
				rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
				rightlink.innerHTML="▶";
			} else {
				rightlink = document.createElement("span");
				rightlink.innerHTML="&nbsp;";
			}
			var comment = document.createElement("tt");
			comment.innerHTML = "("+ (j+1) + "/" + units.length + ")";
			with(imghead) {
				style.fontSize="110%";
				style.fontweight="bold";
				appendChild(leftlink);
				appendChild(comment);
				appendChild(rightlink);
			}
			wrap.insertBefore(imghead,wrap.childNodes[0]);
			if (j != 0) wrap.style.display="none";
		}
	}
}
$(ImageGroup);

// ===========================================================
// დასასრული - კოდი თარგისთვის "ფოტოგალერეა"
// ===========================================================


// ============================================================
// BEGIN import Onlyifediting-functions
// SEE ALSO [[MediaWiki:Onlyifediting.js]]
 
 if (document.URL.indexOf("action=edit") > 0 || document.URL.indexOf("action=submit") > 0) {
     importScript('MediaWiki:Onlyifediting.js');
 }
 
// END import Onlyifediting-functions
// ============================================================

/**
 * WikiMiniAtlas is a popup click and drag world map.
 * See [[meta:WikiMiniAtlas]] for more information.
 * Maintainers: [[w:User:Dschwen]]
 */
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );

/**
  * Remove need for CSS hacks regarding MSIE and IPA.
  */

if(navigator.userAgent.indexOf("MSIE") != -1 && document.createStyleSheet) {
   document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";');
}