「MediaWiki:Common.js」の版間の差分

提供:エケペディア
ナビゲーションに移動 検索に移動
(拡張型折りたたみ可能要素を追加(wikipedia:MediaWiki:EnhancedCollapsibleElements.jsよりインポート))
(Yasusushi (トーク) による版 45314 を取り消し)
1行目: 1行目:
// <nowiki>
/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */
/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */


144行目: 142行目:
     });
     });
}
}
/* 拡張型折りたたみ可能要素 */
//  Wikipedia日本語版(MediaWiki:EnhancedCollapsibleElements.js、作者:青子守歌)より移入
//  変更点:コメント部分の除去・改変(コード自体への変更は無し)
//  CC BY-SA 3.0、CC BY-NC 3.0、GPLv3ライセンスで利用可
(function($, mw, undefined)
{
var ece = function()
{
$("span.ece-button").each(function()
{
$this = $(this);
var targettext = $this.find("span.ece-target").text();
var etext = $this.find("span.ece-etext").html();
var ctext = $this.find("span.ece-ctext").html();
var state = $this.find("span.ece-state").text();
var $body = $this.find("span.ece-body");
if($body.length === 0)
{
$body = $(document.createElement("span")).addClass("ece-body");
$(this).append($body);
}
if((targettext.length !== 0)&&(etext.length !== 0)&&(ctext.length !== 0)&&(state.length !== 0))
{
var $button = $("<a>").attr({href: '#'}).click(function(e){ e.preventDefault(); });
$button.click(function()
{
state = (state == "e") ? "c" : "e";
$button.html((state == "e") ? ctext : etext);
$("#mw-content-text").find(targettext).each(function()
{
$(this)[(state == "e") ? "show" : "hide"]();
});
});
state = (state == "e") ? "c" : "e";
$button.click();
$body.empty();
$body.append($button);
}
});
}; // var ece
mw.loader.using(['mediawiki.util'], function() {
  ece();
});
})(jQuery, mediaWiki);
// </nowiki>

2015年10月21日 (水) 17:24時点における版

/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */

/* URLのwithCSS・withJSパラメータで、追加のスタイルシート・スクリプトを読み込む */
var extraCSS = mw.util.getParamValue('withCSS');
if (extraCSS && extraCSS.match(/\.css$/)) {
    mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') +
                   '?action=raw&ctype=text/css&title=' +
                   mw.util.wikiUrlencode(extraCSS), 'text/css');
}
var extraJS = mw.util.getParamValue('withJS');
if (extraJS && extraJS.match(/\.js$/)) {
    mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') +
                   '?action=raw&ctype=text/javascript&title=' +
                   mw.util.wikiUrlencode(extraJS), 'text/javascript');

/* [[テンプレート:折り畳みボックス]] */
var collapseCaption = '隠す';
var expandCaption = '表示';

function toggleCollapsible(key, e) {
    e.preventDefault();
    if (this.hasClass('collapsed')) {
        this.removeClass('collapsed').find('> tbody > tr:not(:first)').fadeIn();
        this.$toggle.text(collapseCaption);
        if (key) $.cookie(key, 'uncollapsed', { path: '/', expires: 90 });
    } else {
        this.addClass('collapsed').find('> tbody > tr:not(:first)').fadeOut();
        this.$toggle.text(expandCaption);
        if (key) $.cookie(key, 'collapsed', { path: '/', expires: 90 });
    }
}

mw.hook('wikipage.content').add(function($content) {
    /* 折り畳みボックス */
    $content.find('table.collapsible').each(function() {
        var $table = $(this),
            collapse = $table.data('collapse');
        if ($table.hasClass('made-collapsible') || collapse == 'plain') return;
        $table.addClass('made-collapsible');

        var $button = $table.find('tr:first > td:first > .collapseButton');
        $table.$toggle = $button.append('[<a href="#"></a>]').children();
        /*
        if (/^cookie-(.+)$/.test(collapse)) {
            var key = 'collapse-' + RegExp.$1;
            collapse = $.cookie(key) || 'autocollapse';
            $table.$toggle.on('click', $.proxy(toggleCollapsible, $table, key));
        } else {
            $table.$toggle.on('click', $.proxy(toggleCollapsible, $table, null));
        }
        */
         $table.$toggle.on('click', $.proxy(toggleCollapsible, $table, null));

        if (collapse == 'collapsed' || (collapse == 'autocollapse' &&
                                        $table.siblings('table.collapsible').length)) {
            $table.addClass('collapsed').find('> tbody > tr:not(:first)').hide();
            $table.$toggle.text(expandCaption);
        } else {
            $table.$toggle.text(collapseCaption);
        }
    });

    /* タブ */
    $content.find('.tab-list').each(function() {
        var $tabList = $(this),
            $tabs = $tabList.find('> ul > li'),
            $tabContent = $tabList.nextAll('.tab-content');
        $tabs.bind('click', function() {
            var $tab = $(this),
                index = $tab.data('tab') - 1;
            $tabs.removeClass('current-tab');
            $tab.addClass('current-tab');
            $tabContent.not($tabContent.eq(index).toggle()).hide();
        });
    });
});


/* 旧エケペディアへの言語間リンクで「_」を「%20」に変換する */
$('#p-lang a:lang(akb49)').attr('href', function(i, href) {
    return href.replace('_', '%20', 'g');
});


/* 非autoconfirmedユーザーの「ページを保存」ボタンをロックし、「プレビューを表示」ボタンへ誘導する */
if (mw.config.get('wgAction') === 'edit' &&
    $.inArray('autoconfirmed', mw.config.get('wgUserGroups')) < 0) {
    $('#wpSave').attr('disabled', 'disabled').val('投稿前にプレビューで確認してください');
    $('#wpPreview').css('font-weight', 'bold');
}


/* カテゴリごとにeditintroを設定する */
window.CATEGORY_EDITINTRO_TABLE = {
    'シングル': 'ヘルプ:シングルページのスタイル/editintro' ,
};
 
window.addEditIntro = function(templateName) {
    var editURI = mw.config.get('wgScript') + '?title=' + encodeTitle(mw.config.get('wgPageName')) + '&action=edit';

    var searchIds = {
        'cologneblue' : ['quickbar', 'footer', 'article'],
        'vector'      : ['ca-edit', 'bodyContent'],
        'modern'      : ['ca-edit', 'mw_contentholder'],
        'monobook'    : ['ca-edit', 'bodyContent']
    };
    var ids = searchIds[skin] || searchIds['monobook'];

    for(var i = 0; i < ids.length; i++) {
        var el = document.getElementById(ids[i]);
        if(!el) continue;

        var aElements = el.getElementsByTagName('a');
        for(var j = 0; j < aElements.length; j++) {
            if(aElements[j].href.indexOf(editURI) >= 0) {
                aElements[j].href += '&editintro=' + encodeTitle(templateName);
            }
        }
    }

    function encodeTitle(title) {
        return encodeURIComponent(title.replace(/ /g, '_')).replace(/%2F/gi, '/').replace(/%3A/gi, ':');
    }
};

if (mw.config.get('wgNamespaceNumber') == 0) {
    $(function(){
        var catIds = ['mw-normal-catlinks', 'mw-hidden-catlinks'];
        for(var i = 0; i < catIds.length; i++) {
            var catContainer = document.getElementById(catIds[i]);
            if(!catContainer) continue;

            var cats = catContainer.getElementsByTagName('a');
            for(var j = 0; j < cats.length; j++) {
                var ei;
                if(ei = CATEGORY_EDITINTRO_TABLE[cats[j].innerHTML]) {
                    addEditIntro(ei);
                    return;
                }
            }
        }
    });
}