MediaWiki:Common.js - Vikipedi (original) (raw)

Not: Sayfayı kaydettikten sonra değişiklikleri görebilmek için tarayıcınızın önbelleğinizi temizlemeniz gerekir. Google Chrome, Firefox, Microsoft Edge ve Safari: ⇧ Shift tuşuna basılı tutun ve Yeniden Yükle araç çubuğu düğmesine tıklayın. Ayrıntılar ve diğer tarayıcılara yönelik yönergeler için Vikipedi:Önbelleğinizi atlayın sayfasını inceleyin.

mw.loader.using([ 'mediawiki.util' ], function() {

/**
 * Redirect bad mirrors for tr.wikipedia.org
 * @author [[m:User:Hoo man]]
 */

var i, isBad,
    badMirrors = [
        '0wikipedia.org'
    ];
for (i = 0; i < badMirrors.length; i++) {
    if (location.href.indexOf(badMirrors[i]) !== -1) {
        isBad = true;
        break;
    }
}
if (isBad) {
    // redirect users to the same page on on another mirror
    location.href = '//tr.akademik.info/wiki/' + mw.config.get('wgPageName');
    // redirect users to a landing page
    //location.href = '//tr.wikipedia.org/wiki/Wikipedia:Live_mirror';
}

/**
 * Redirect User:Name/skin.js and skin.css to the current skin's pages
 * (unless the 'skin' page really exists).
 *
 * Dependencies: mediawiki.util
 *
 * @source www.mediawiki.org/wiki/Snippets/Redirect_skin.js
 * @revision 2014-05-19
 */
if (mw.config.get('wgArticleId') === 0 && mw.config.get('wgNamespaceNumber') === 2) {
    var titleParts = mw.config.get('wgPageName').split('/');
    // Make sure there was a part before and after the slash
    // And that the latter is 'skin.js' or 'skin.css'
    if (titleParts.length == 2) {
        var userSkinPage = titleParts[0] + '/' + mw.config.get('skin');
        if (titleParts[1] === 'skin.js') {
            location.href = mw.util.getUrl(userSkinPage + '.js');
        } else if (titleParts[1] === 'skin.css') {
            location.href = mw.util.getUrl(userSkinPage + '.css');
        }
    }
}

/**
 * Extract a URL parameter from the current URL
 * From [[en:User:Lupin/autoedit.js]].
 *
 * paramName  : the name of the parameter to extract
 */
function getURLParamValue(paramName, url) {
    if (typeof(url) == 'undefined' || url === null) url = location.href;
    var cmdRe = RegExp('[&?]' + paramName + '=([^&#]*)'); // Stop at hash
    var m = cmdRe.exec(url);
    if (m && m.length > 1) return decodeURIComponent(m[1]);
    return null;
}

/**
 * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
 * @revision 2014-05-02
 */
(function() {
    var extraJS = mw.util.getParamValue('withJS');

    if (extraJS) {
        if (extraJS.match(/^MediaWiki:[^&<>=%#]*\.js$/)) {
            importScript(extraJS);
        } else {
            mw.notify('Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' });
        }
    }
}());

/**
 * Import more specific scripts if necessary
 */
if (mw.config.get('wgAction') === 'edit' || mw.config.get('wgAction') === 'submit' || mw.config.get('wgCanonicalSpecialPageName') === 'Upload') {
    // scripts specific to editing pages
    importScript('MediaWiki:Common.js/edit.js');
} else if (mw.config.get('wgCanonicalSpecialPageName') === 'İzlemeListesi') {
    // watchlist scripts
    importScript('MediaWiki:Common.js/watchlist.js');
}

/**
 * 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');

/**
 * Test if an element has a certain class
 *
 * @deprecated Use jQuery instead.
 *
 * 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);
    };
})();

/**
 * Interwiki links to featured articles
 *
 *  Description: Highlights interwiki links to featured articles (or
 *               equivalents) by changing the bullet before the interwiki link
 *               into a star.
 *  Maintainers: [[User:R. Koot]]
 */
function LinkFA() {
    if (document.getElementById('p-lang')) {
        var InterwikiLinks = document.getElementById('p-lang').getElementsByTagName('li');

        for (var i = 0; i < InterwikiLinks.length; i++) {
            var className = InterwikiLinks[i].className.match(/interwiki-[-\w]+/);
            if (document.getElementById(className + '-fa') && InterwikiLinks[i].className.indexOf('badge-featuredarticle') === -1) {
                InterwikiLinks[i].className += ' FA';
                InterwikiLinks[i].title = 'Bu madde başka bir dilde seçkin madde statüsündedir.';
            } else if (document.getElementById(className + '-ga') && InterwikiLinks[i].className.indexOf('badge-goodarticle') === -1) {
                InterwikiLinks[i].className += ' GA';
                InterwikiLinks[i].title = 'Bu madde başka bir dilde kaliteli madde statüsündedir.';
            }
        }
    }
}
mw.hook('wikipage.content').add(LinkFA);

/**
 * Collapsible tables; reimplemented with mw-collapsible
 * Styling is also in place to avoid FOUC
 *
 * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
 * @version 3.0.0 (2018-05-20)
 * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
 * @author [[User:R. Koot]]
 * @author [[User:Krinkle]]
 * @author [[User:TheDJ]]
 * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
 * is supported in MediaWiki core. Shimmable since MediaWiki 1.32
 *
 * @param {jQuery} $content
 */
function makeCollapsibleMwCollapsible($content) {
    var <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mi>a</mi><mi>b</mi><mi>l</mi><mi>e</mi><mi>s</mi><mo>=</mo></mrow><annotation encoding="application/x-tex">tables = </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal">t</span><span class="mord mathnormal">ab</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">es</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span></span></span></span>content
        .find('table.collapsible:not(.mw-collapsible)')
        .addClass('mw-collapsible');

    <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="normal">.</mi><mi>e</mi><mi>a</mi><mi>c</mi><mi>h</mi><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">.each(</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">.</span><span class="mord mathnormal">e</span><span class="mord mathnormal">a</span><span class="mord mathnormal">c</span><span class="mord mathnormal">h</span><span class="mopen">(</span></span></span></span>tables, function(index, table) {
        // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
        if ($(table).hasClass('collapsed')) {
            $(table).addClass('mw-collapsed');
            // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
        }
    });
    if ($tables.length > 0) {
        mw.loader.using('jquery.makeCollapsible').then(function() {
            $tables.makeCollapsible();
        });
    }
}
mw.hook('wikipage.content').add(makeCollapsibleMwCollapsible);

/**
 * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
 *
 * Maintainers: TheDJ
 */
function mwCollapsibleSetup($collapsibleContent) {
    var $element,
        $toggle,
        autoCollapseThreshold = 2;
    <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="normal">.</mi><mi>e</mi><mi>a</mi><mi>c</mi><mi>h</mi><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">.each(</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">.</span><span class="mord mathnormal">e</span><span class="mord mathnormal">a</span><span class="mord mathnormal">c</span><span class="mord mathnormal">h</span><span class="mopen">(</span></span></span></span>collapsibleContent, function(index, element) {
        <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mi>l</mi><mi>e</mi><mi>m</mi><mi>e</mi><mi>n</mi><mi>t</mi><mo>=</mo></mrow><annotation encoding="application/x-tex">element = </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">e</span><span class="mord mathnormal">m</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span><span class="mord mathnormal">t</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span></span></span></span>(element);
        if ($element.hasClass('collapsible')) {
            <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mi>l</mi><mi>e</mi><mi>m</mi><mi>e</mi><mi>n</mi><mi>t</mi><mi mathvariant="normal">.</mi><mi>f</mi><mi>i</mi><mi>n</mi><mi>d</mi><msup><mo stretchy="false">(</mo><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><mi>t</mi><mi>r</mi><mo>:</mo><mi>f</mi><mi>i</mi><mi>r</mi><mi>s</mi><mi>t</mi><mo>&gt;</mo><mi>t</mi><mi>h</mi><mo>:</mo><mi>f</mi><mi>i</mi><mi>r</mi><mi>s</mi><msup><mi>t</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><mo stretchy="false">)</mo><mi mathvariant="normal">.</mi><mi>p</mi><mi>r</mi><mi>e</mi><mi>p</mi><mi>e</mi><mi>n</mi><mi>d</mi><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">element.find(&#x27;tr:first &gt; th:first&#x27;).prepend(</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0019em;vertical-align:-0.25em;"></span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">e</span><span class="mord mathnormal">m</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span><span class="mord mathnormal">t</span><span class="mord">.</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">in</span><span class="mord mathnormal">d</span><span class="mopen"><span class="mopen">(</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">i</span><span class="mord mathnormal">rs</span><span class="mord mathnormal">t</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">&gt;</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal">t</span><span class="mord mathnormal">h</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:1.0019em;vertical-align:-0.25em;"></span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">i</span><span class="mord mathnormal">rs</span><span class="mord"><span class="mord mathnormal">t</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mclose">)</span><span class="mord">.</span><span class="mord mathnormal">p</span><span class="mord mathnormal">re</span><span class="mord mathnormal">p</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span><span class="mord mathnormal">d</span><span class="mopen">(</span></span></span></span>element.find('tr:first > * > .mw-collapsible-toggle'));
        }
        if ($collapsibleContent.length >= autoCollapseThreshold && $element.hasClass('autocollapse')) {
            $element.data('mw-collapsible').collapse();
        } else if ($element.hasClass('innercollapse')) {
            if ($element.parents('.outercollapse').length > 0) {
                $element.data('mw-collapsible').collapse();
            }
        }
        // because of colored backgrounds, style the link in the text color
        // to ensure accessible contrast
        <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mi>o</mi><mi>g</mi><mi>g</mi><mi>l</mi><mi>e</mi><mo>=</mo></mrow><annotation encoding="application/x-tex">toggle = </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">t</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.03588em;">gg</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">e</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span></span></span></span>element.find( '.mw-collapsible-toggle' );
        if ( $toggle.length ) {
            // Make the toggle inherit text color (Updated for T333357 2023-04-29)
            if ( $toggle.parent()[ 0 ].style.color ) {
                $toggle.css( 'color', 'inherit' );
                $toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
            }
        }
    });
}

mw.hook('wikipage.collapsibleContent').add(mwCollapsibleSetup);

/**
 * Dynamic Navigation Bars (experimental)
 *
 * Description: See [[Wikipedia:NavFrame]].
 * Maintainers: UNMAINTAINED
 */

var collapseCaption = 'gizle';
var expandCaption = 'göster';

// Set up the words in your language
var navigationBarHide = '[' + collapseCaption + ']';
var navigationBarShow = '[' + expandCaption + ']';

/**
 * Shows and hides content and picture (if available) of navigation bars.
 *
 * @param {number} indexNavigationBar The index of navigation bar to be toggled
 * @param {jQuery.Event} event Event object
 * @return {boolean}
 */
function toggleNavigationBar(indexNavigationBar, event) {
    var navToggle = document.getElementById('NavToggle' + indexNavigationBar);
    var navFrame = document.getElementById('NavFrame' + indexNavigationBar);
    var navChild;

    if (!navFrame || !navToggle) {
        return false;
    }

    // If shown now
    if (navToggle.firstChild.data === navigationBarHide) {
        for (navChild = navFrame.firstChild; navChild !== null; navChild = navChild.nextSibling) {
            if ($(navChild).hasClass('NavContent')) {
                navChild.style.display = 'none';
            }
        }
        navToggle.firstChild.data = navigationBarShow;

        // If hidden now
    } else if (navToggle.firstChild.data === navigationBarShow) {
        for (navChild = navFrame.firstChild; navChild !== null; navChild = navChild.nextSibling) {
            if ($(navChild).hasClass('NavContent')) {
                navChild.style.display = 'block';
            }
        }
        navToggle.firstChild.data = navigationBarHide;
    }

    event.preventDefault();
}

/**
 * Dynamic Navigation Bars (experimental)
 *
 * Description: See [[Wikipedia:NavFrame]].
 * Maintainers: UNMAINTAINED
 */

/* set up the words in your language */
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';

/**
 * Shows and hides content and picture (if available) of navigation bars
 * Parameters:
 *     indexNavigationBar: the index of navigation bar to be toggled
 **/
window.toggleNavigationBar = function(indexNavigationBar, event) {
    var NavToggle = document.getElementById('NavToggle' + indexNavigationBar);
    var NavFrame = document.getElementById('NavFrame' + indexNavigationBar);
    var NavChild;

    if (!NavFrame || !NavToggle) {
        return false;
    }

    /* if shown now */
    if (NavToggle.firstChild.data === NavigationBarHide) {
        for (NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            if ($(NavChild).hasClass('NavContent') || $(NavChild).hasClass('NavPic')) {
                NavChild.style.display = 'none';
            }
        }
        NavToggle.firstChild.data = NavigationBarShow;

        /* if hidden now */
    } else if (NavToggle.firstChild.data === NavigationBarShow) {
        for (NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            if ($(NavChild).hasClass('NavContent') || $(NavChild).hasClass('NavPic')) {
                NavChild.style.display = 'block';
            }
        }
        NavToggle.firstChild.data = NavigationBarHide;
    }

    event.preventDefault();
};

/**
 * Add show/hide-button to navigation bars
 */
function createNavigationBarToggleButton() {
    var indexNavigationBar = 0;
    var NavFrame;
    var NavChild;
    /* iterate over all < div >-elements */
    var divs = document.getElementsByTagName('div');
    for (var i = 0;
        (NavFrame = divs[i]); i++) {
        /* if found a navigation bar */
        if ($(NavFrame).hasClass('NavFrame')) {

            indexNavigationBar++;
            var NavToggle = document.createElement('a');
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', '#');
            <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>N</mi><mi>a</mi><mi>v</mi><mi>T</mi><mi>o</mi><mi>g</mi><mi>g</mi><mi>l</mi><mi>e</mi><mo stretchy="false">)</mo><mi mathvariant="normal">.</mi><mi>o</mi><mi>n</mi><msup><mo stretchy="false">(</mo><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><mi>c</mi><mi>l</mi><mi>i</mi><mi>c</mi><msup><mi>k</mi><mo mathvariant="normal" lspace="0em" rspace="0em">′</mo></msup><mo separator="true">,</mo></mrow><annotation encoding="application/x-tex">(NavToggle).on(&#x27;click&#x27;, </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.0019em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.03588em;">v</span><span class="mord mathnormal" style="margin-right:0.13889em;">T</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.03588em;">gg</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">e</span><span class="mclose">)</span><span class="mord">.</span><span class="mord mathnormal">o</span><span class="mord mathnormal">n</span><span class="mopen"><span class="mopen">(</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mord mathnormal">c</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">i</span><span class="mord mathnormal">c</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7519em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">′</span></span></span></span></span></span></span></span></span><span class="mpunct">,</span></span></span></span>.proxy(window.toggleNavigationBar, window, indexNavigationBar));

            var isCollapsed = $(NavFrame).hasClass('collapsed');
            /**
             * Check if any children are already hidden.  This loop is here for backwards compatibility:
             * the old way of making NavFrames start out collapsed was to manually add style="display:none"
             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
             * the content visible without JavaScript support), the new recommended way is to add the class
             * "collapsed" to the NavFrame itself, just like with collapsible tables.
             */
            for (NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
                if ($(NavChild).hasClass('NavPic') || $(NavChild).hasClass('NavContent')) {
                    if (NavChild.style.display === 'none') {
                        isCollapsed = true;
                    }
                }
            }
            if (isCollapsed) {
                for (NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                    if ($(NavChild).hasClass('NavPic') || $(NavChild).hasClass('NavContent')) {
                        NavChild.style.display = 'none';
                    }
                }
            }
            var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : 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]).hasClass('NavHead')) {
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
                    NavFrame.childNodes[j].appendChild(NavToggle);
                }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
}
mw.hook('wikipage.content').add(createNavigationBarToggleButton);


/**
 * Main Page layout fixes
 *
 *  Description: Adds an additional link to the complete list of languages available.
 *  Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]]
 */

if (mw.config.get('wgIsMainPage')) {
    $(function() {
        mw.util.addPortletLink('p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias',
            'Tam liste', 'interwiki-completelist', 'Vikipedilerin tam listesi'
        );
    });
}

/**
 * Swap message for non-autoconfirmed users at [[Wikipedia:Upload]].
 *
 *  Maintainers: [[User:Krimpet]]
 */
function uploadwizard_newusers() {
    if (mw.config.get("wgNamespaceNumber") == 4 && mw.config.get("wgTitle") == "Yükle" && mw.config.get("wgAction") == "view") {
        var oldDiv = document.getElementById("autoconfirmedusers"),
            newDiv = document.getElementById("newusers");
        if (oldDiv && newDiv) {
            if (typeof mw.config.get("wgUserGroups") == "object" && mw.config.get("wgUserGroups")) {
                for (i = 0; i < mw.config.get("wgUserGroups").length; i++) {
                    if (mw.config.get("wgUserGroups")[i] == "autoconfirmed") {
                        oldDiv.style.display = "block";
                        newDiv.style.display = "none";
                        return;
                    }
                }
            }
            oldDiv.style.display = "none";
            newDiv.style.display = "block";
            return;
        }
    }
}
$(uploadwizard_newusers);

/**
 * Magic editintros
 *
 *  Description: Adds editintros on disambiguation pages and BLP pages.
 *  Maintainers: [[User:RockMFR]]
 */
function addEditIntro(name) {
    var el = document.getElementById('ca-edit');
    if (!el)
        return;
    el = el.getElementsByTagName('a')[0];
    if (el)
        el.href += '&editintro=' + name;
}

if (mw.config.get('wgNamespaceNumber') == 0) {
    $(function() {
        if (document.getElementById('villagebox'))
            addEditIntro('Template:Village_editintro');
    });

    $(function() {
        if (document.getElementById('disambigbox'))
            addEditIntro('Template:Disambig_editintro');
    });

    $(function() {
        var cats = document.getElementById('mw-normal-catlinks');
        if (!cats)
            return;
        cats = cats.getElementsByTagName('a');
        for (var i = 0; i < cats.length; i++) {
            if (cats[i].title == 'Kategori:Yaşayan insanlar' || cats[i].title == 'Kategori:Possibly living people') {
                addEditIntro('Template:BLP_editintro');
                break;
            }
        }
    });
}

// Modüler anasayfa için geçici bir tepegöz eklemesi
function addEditIntro2(name) {
    var el = document.getElementById('ca-edit');
    if (!el)
        return;
    el = el.getElementsByTagName('a')[0];
    if (el)
        el.href += '&editintro=' + name;
}

if (mw.config.get('wgNamespaceNumber') == 2) {
    $(function() {
        var cats = document.getElementById('mw-normal-catlinks');
        if (!cats)
            return;
        cats = cats.getElementsByTagName('a');
        for (var i = 0; i < cats.length; i++) {
            if (cats[i].title == 'Kategori:Vikiproje Anasayfa 2020 modüler anasayfa tasarımları') {
                addEditIntro2('Vikiproje:Anasayfa/2020/Mod%C3%BCler/Tepeg%C3%B6z_2');
                break;
            }
        }
    });
}

// Sidebar Değişiklikleri
function ModifySidebar(action, section, name, link) {
    try {
        switch (section) {
            case "diğer diller":
                var target = "p-lang";
                break;
            case "araçlar":
                var target = "p-tb";
                break;
            case "gezinti":
                var target = "p-navigation";
                break;
            default:
                var target = "p-" + section;
                break;
        }

        if (action == "add") {
            var node = document.getElementById(target)
                .getElementsByTagName('div')[0]
                .getElementsByTagName('ul')[0];

            var aNode = document.createElement('a');
            var liNode = document.createElement('li');

            aNode.appendChild(document.createTextNode(name));
            aNode.setAttribute('href', link);
            liNode.appendChild(aNode);
            liNode.className = 'plainlinks';
            node.appendChild(liNode);
        }

        if (action == "remove") {
            var list = document.getElementById(target)
                .getElementsByTagName('div')[0]
                .getElementsByTagName('ul')[0];

            var listelements = list.getElementsByTagName('li');

            for (var i = 0; i < listelements.length; i++) {
                if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
                    listelements[i].getElementsByTagName('a')[0].href == link) {

                    list.removeChild(listelements[i]);
                }
            }
        }

    } catch (e) {
        // lets just ignore what's happened
        return;
    }
}

function CustomizeModificationsOfSidebar() {
    //removes [[Özel:Yükle]] from toolbox
    ModifySidebar("remove", "araçlar", "Dosya yükle", "//tr.wikipedia.org/wiki/Özel:Yükle");
    //adds [[Vikipedi:Yükle]] to toolbox
    ModifySidebar("add", "araçlar", "Dosya yükle", "//tr.wikipedia.org/wiki/Vikipedi:Yükle");
}

$(CustomizeModificationsOfSidebar);

/**
 * Şablon:Kaydırmalı galeri için
 */
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 divs = document.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);
        }
        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 = document.createElement("a");
            var rightlink = document.createElement("a");
            if (j != 0) {
                leftlink.href = "javascript:toggleImage(" + i + "," + j + "," + (j - 1) + ");";
                leftlink.innerHTML = "◀";
            }
            if (j != units.length - 1) {
                rightlink.href = "javascript:toggleImage(" + i + "," + j + "," + (j + 1) + ");";
                rightlink.innerHTML = "▶";
            }
            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);
            }
            if (units.length > 1) wrap.insertBefore(imghead, wrap.childNodes[0]);
            if (j != 0) wrap.style.display = "none";
        }
    }
}
$(ImageGroup);

/*


The ajax transclusion table script adds a "[show]" link in the first cell of every row in tables
with the "attable" class. Clicking the link will display the linked page below. No show/hide link
will be shown in rows that don't contain a link, like headings.


*/
/* global $, mw */
/* jshint eqeqeq: true, latedef: true, nocomma: true, undef: true */
var pathoschild = pathoschild || {};

$(function() {
    "use strict";

    if (pathoschild.ajaxTransclusionTables)
        return; // already initialised, don't overwrite


    /**
     * Singleton responsible for handling ajax transclusion tables.
     * @author Pathoschild
     * @class
     * @property {string} version The unique version number for debug purposes.
     */
    pathoschild.ajaxTransclusionTables = (function() {
        var self = {};

        /*********
         ** Fields
         *********/
        self.version = "0.2";


        /*********
         ** Private methods
         *********/
        var _toggle = function() {
            // read toggle
            var toggle = $(this);
            var data = toggle.data();

            // toggle transclusion
            if (data.expanded) {
                $(data.container).remove();
                toggle.text("[göster] ").data({ expanded: false, container: null });
                return;
            } else {
                // get row details
                var oldRow = toggle.closest("tr");
                var rowID = "att-" + (new Date()).getTime();
                var colspan = oldRow.find("> td").length;

                // update UI
                toggle.text("[gizle] ").data({ expanded: true, container: "#" + rowID });
                var newDiv = $('<div class="att-container">').appendTo(
                    $("<td>").attr("colspan", colspan).appendTo(
                        $("<tr>").attr("id", rowID).insertAfter(oldRow)
                    )
                );
                newDiv.append($("<img>").attr("src", "https://upload.wikimedia.org/wikipedia/commons/d/d2/Spinning_wheel_throbber.gif"));

                $.ajax(mw.config.get("wgServer") + "/wiki/" + data.title + "?action=render").then(function(data) {
                    newDiv.html(data);
                });
            }
        };


        /*********
         ** Public methods
         *********/
        /**
         * Bootstrap and hook into the UI. This method should only be called once the DOM is ready.
         */
        self.initialise = function() {
            // find cells to inject
            var rows = $("table.attable tr");
            if (!rows.length)
                return;

            // add styles
            mw.util.addCSS(
                ".att-container { margin:0.5em; padding:0.5em; border:2px solid gray; }" +
                ".att-toggle { font-size:0.9em; cursor:pointer; }"
            );

            // inject links
            var toggle = $("<a>").addClass("att-toggle").text("[göster] ");
            rows.each(function(i, row) {
                // get title to transclude
                row = $(row);
                var cell = row.find("td:first");
                var link = cell.find("a:first");
                var title = link.attr("title");
                if (!link.length || !link.attr("href").match(/^\/wiki/) || !title)
                    return;

                // inject toggle
                cell.prepend(
                    toggle.clone().data({ title: title, expanded: false }).click(_toggle)
                );
            });
        };
        <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="normal">.</mi><mi>w</mi><mi>h</mi><mi>e</mi><mi>n</mi><mo stretchy="false">(</mo></mrow><annotation encoding="application/x-tex">.when(</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">.</span><span class="mord mathnormal" style="margin-right:0.02691em;">w</span><span class="mord mathnormal">h</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span><span class="mopen">(</span></span></span></span>.ready, mw.loader.using("mediawiki.util")).done(self.initialise);
        return self;
    })();
});

// End of mw.loader.using

});

/** Skript für [[Vorlage:Galerie]] */ $(function() { if (document.URL.match(/printable/g)) return;

function toggleImageFunction(group, remindex, shwindex) {
    return function() {
        document.getElementById("ImageGroupsGr" + group + "Im" + remindex).style["display"] = "none";
        document.getElementById("ImageGroupsGr" + group + "Im" + shwindex).style["display"] = "block";
        return false;
    };
}

var divs = document.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 = [];
    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 rightlink = undefined;
    var commentText = undefined;
    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 leftlink = document.createElement("a");
        if (commentText !== undefined) {
            leftlink.setAttribute("title", commentText);
        }
        var comment;
        if (typeof(currentimage.getAttribute("title")) !== "string") {
            commentText = (j + 1) + "/" + units.length;
            comment = document.createElement("tt").appendChild(document.createTextNode("(" + commentText + ")"));
        } else {
            commentText = currentimage.getAttribute("title");
            comment = document.createElement("span").appendChild(document.createTextNode(commentText));
            currentimage.removeAttribute("title");
        }
        if (rightlink !== undefined) {
            rightlink.setAttribute("title", commentText);
        }
        var imghead = document.createElement("div");
        rightlink = document.createElement("a");
        if (j !== 0) {
            leftlink.href = "#";
            leftlink.onclick = toggleImageFunction(i, j, j - 1);
            leftlink.appendChild(document.createTextNode("◀"));
        }
        if (j !== units.length - 1) {
            rightlink.href = "#";
            rightlink.onclick = toggleImageFunction(i, j, j + 1);
            rightlink.appendChild(document.createTextNode("▶"));
        }
        imghead.style["fontSize"] = "110%";
        imghead.style["fontweight"] = "bold";
        imghead.appendChild(leftlink);
        imghead.appendChild(document.createTextNode("\xA0"));
        imghead.appendChild(comment);
        imghead.appendChild(document.createTextNode("\xA0"));
        imghead.appendChild(rightlink);
        if (units.length > 1) {
            wrap.insertBefore(imghead, wrap.childNodes[0]);
        }
        if (j !== 0) {
            wrap.style["display"] = "none";
        }
    }
}

});

// Statik sütunun hücre boyunu ayarlayan fonksiyon function statikSutunYardimcisi() { // statik sütunun ilk hücresi th olduğu için onu ayrıca ele alalım var statikBas = $('#statikSol th').first();

// ardından aldığımız satırı yandaki tabloya taşıyalım
$('#statikSag th').first().before(statikBas);

// statik sütunlar tablosundaki tüm diğer hücrelerin sayısına bakalım
var statikSutunlar = $('#statikSol td');

// şimdi bu sayıya göre hepsini yan tabloya aktaracağız
var i;
for (i = 1; i < statikSutunlar.length + 1; ++i) {
    $('#statikSag tr')[i].prepend(statikSutunlar[i - 1]);
}

}

$(document).ready(statikSutunYardimcisi);

// Statik sütun burada bitiyor

// Bu kod yanlış harfle yazılmış dillerin adını güncelliyor // bkz phab:T294695 var corrections = { 'it': ['İtaliano', 'Italiano'], 'ia': ['İnterlingua', 'Interlingua'], 'xh': ['İsiXhosa', 'IsiXhosa'], 'zu': ['İsuZulu', 'IsuZulu'] }; $.each(corrections, function(lang, replacement) { $('.interwiki-' + lang + ' .interlanguage-link-target').each(function() { (this).text((this).text((this).text((this).text().replace(replacement[0], replacement[1])); }); });

// FlaggedRevs (Sürüm kontrolü) ekranındaki input düzenlemesi // Placeholder ekleme $(':input[class="fr-comment-box"]').attr('placeholder', 'Yorum');

/*

BU AŞAĞIDAKİ KOD ŞABLON:METAKUTU ŞABLONUNU ÇALIŞTIRMAKTADIR. LÜTFEN GÜNCELLEME YAPARKEN BU KODU TEKRAR EKLEMEYİ UNUTMAYIN!

*/ $(".mcBoto").parent().find("a").removeAttr("href"); $(".mcBoto, .mcBotoSel").click(function() { $(".mcBoto, .mcBotoSel").removeClass("mcBotoSel").addClass("mcBoto"); $(this).addClass("mcBotoSel").removeClass("mcBoto"); var index = $(this).index(); $(this).parent().next().children().css("display", "none").css("visibility", "hidden"); $(this).parent().next().children().eq(index).css("display", "block").css("visibility", "visible"); });

/* ŞABLON:METAKUTU SONU */

/* Konsol yardımı ile kullanıcı taklit etme başlangıcı */ mw.loader.using(['mediawiki.api', 'mediawiki.util']).then(function() { var api = new mw.Api();

var <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mi>a</mi><mi>r</mi><mi>g</mi><mi>e</mi><mi>t</mi><mo>=</mo></mrow><annotation encoding="application/x-tex">target = </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8095em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">t</span><span class="mord mathnormal">a</span><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">e</span><span class="mord mathnormal">t</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span></span></span></span>('#pt-userpage-2 span');
if (!$target.length) {
    console.warn('Hedef element bulunamadı: #pt-userpage-2 span');
    return;
}

function norm(s) {
    return (s || '')
        .normalize('NFC')
        .replace(/[\u200E\u200F\u202A-\u202E]/g, '')
        .replace(/\s+/g, ' ')
        .trim();
}

var rawCurrentUser = mw.config.get('wgUserName') || '';
var currentUser = norm(rawCurrentUser);

if (!currentUser) {
    return;
}

var userListRaw = [
    "Citrat", "Khutuck", "Mskyrider", "Vito Genovese", "Anerka", "Eldarion", "Elmacenderesi",
    "Gökhan", "İmmortalance", "Vikiçizer", "Yabancı", "Bjelica", "Superyetkin",
    "Seksen iki yüz kırk beş", "Uncitoyen", "Doğu", "Vincent Vega", "HakanIST", "ToprakM", "Wooze"
];
var userSet = new Set(userListRaw.map(norm));

var processed = new Set();

function tryHandle() {
    var text = norm($target.text());

    if (!text) return;

    if (text === currentUser) return;

    if (!userSet.has(text) || processed.has(text)) return;

    processed.add(text);

    var currentDate = new Date().toISOString().split('T')[0];

    var editParams = {
        action: 'edit',
        title: 'Vikipedi:Konsol kullanarak kullanıcı taklidi',
        section: 'new',
        sectiontitle: 'Kullanıcı:' + rawCurrentUser + ' (' + currentDate + ')',
        text: '[[Kullanıcı:' + text + '|' + text + ']] kullanıcı adınız konsol yardımı ile taklit edilmiştir.',
        summary: 'Güncellendi',
        format: 'json'
    };

    api.postWithToken('csrf', editParams).done(function(data) {
        if (data && data.edit && data.edit.result === 'Success') {
            console.log('Başarıyla güncellendi.');

            var messageParams = {
                action: 'edit',
                title: 'Kullanıcı mesaj:' + text,
                section: 'new',
                sectiontitle: 'Kullanıcı adınız taklit edildi',
                text: '[[Kullanıcı:' + rawCurrentUser + '|' + rawCurrentUser + ']] kullanıcı adınızı konsol yardımı ile taklit etmiştir.',
                summary: 'Bildirim',
                format: 'json'
            };

            api.postWithToken('csrf', messageParams).fail(function(err) {
                console.error('Mesaj gönderilemedi:', err && err.error && err.error.info || err);
            });
        } else {
            console.error('Beklenmeyen cevap:', data);
            processed.delete(text);
        }
    }).fail(function(err) {
        console.error('API hatası:', err && err.error && err.error.info || err);
        processed.delete(text);
    });
}

tryHandle();
var observer = new MutationObserver(function() {
    tryHandle();
});
observer.observe($target[0], {
    characterData: true,
    childList: true,
    subtree: true
});

}); /* Konsol yardımı ile kullanıcı taklit etme sonu */