< 利用者:野獣2世
注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
- Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
- Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
- Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください。
(function () {
'use strict';
function setupDualSidebars() {
var articleBody = document.getElementById('article-body');
if (!articleBody) return;
/* ========== 左サイドバー(メニュー系) ========== */
if (!document.getElementById('left-sidebar')) {
var pageName =
(mw.config && mw.config.get('wgPageName')) ||
location.pathname.replace('/wiki/', '');
var left = document.createElement('aside');
left.id = 'left-sidebar';
left.innerHTML = `
<div style="font-family:inherit;font-size:12px;line-height:1.4;">
<h2 style="font-size:14px;margin:6px 0;">📌 メニュー</h2>
<ul style="padding-left:18px;margin:0 0 8px;">
<li><a href="/wiki/Hikakin_Mania_Wiki:メインページ">トップページ</a></li>
<li><a href="/wiki/Hikakin_Mania_Wiki:お知らせ">お知らせ</a></li>
<li><a href="/wiki/Hikakin_Mania_Wiki:Hikakin_Mania_Wikiについて">本Wikiについて</a></li>
<li><a href="/wiki/特別:おまかせ表示">おまかせ表示</a></li>
<li><a href="/wiki/Portal:最近の出来事">最近の出来事</a></li>
<li><a href="/wiki/特別:特別ページ一覧">特別ページ</a></li>
</ul>
<details open>
<summary>🛠 編集者向け</summary>
<ul style="padding-left:18px;margin:6px 0 0;">
<li><a href="/wiki/Hikakin_Mania_Wiki:管理人問い合わせフォーム">管理人問い合わせ</a></li>
<li><a href="/wiki/Hikakin_Mania_Wiki:使えるマークアップ">使えるマークアップ</a></li>
<li><a href="/wiki/Hikakin_Mania_Wiki:サンドボックス">サンドボックス</a></li>
<li><a href="/wiki/Hikakin_Mania_Wiki:方針とガイドライン">方針とガイドライン</a></li>
</ul>
</details>
<h2 style="font-size:14px;margin:8px 0 4px;">🧰 ツール</h2>
<ul style="padding-left:18px;margin:0;">
<li><a href="/wiki/${pageName}?action=purge">キャッシュ削除</a></li>
<li><a href="/wiki/特別:リンク元/${pageName}">リンク元</a></li>
<li><a href="/index.php?title=${pageName}&action=info">ページ情報</a></li>
</ul>
</div>`;
articleBody.prepend(left);
}
/* ========== 右サイドバー(最近の更新) ========== */
if (document.getElementById('right-sidebar')) return;
var right = document.createElement('aside');
right.id = 'right-sidebar';
right.innerHTML = `
<h2 style="font-size:14px;margin:6px 0;">⌛ 最近の更新</h2>
<div class="rc-loading">取得中…</div>
`;
articleBody.appendChild(right);
var apiBase = (mw.util && mw.util.wikiScript)
? mw.util.wikiScript('api')
: '/api.php';
var params = {
action: 'query',
format: 'json',
list: 'recentchanges',
rcprop: 'title|timestamp',
rclimit: '100',
rcnamespace: '0',
rcshow: '!bot'
};
var query = apiBase + '?' + Object.keys(params)
.map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
.join('&');
fetch(query)
.then(r => r.json())
.then(data => {
if (!data.query || !data.query.recentchanges) return;
var seen = new Set();
var grouped = {};
var order = [];
data.query.recentchanges.forEach(rc => {
if (seen.has(rc.title)) return;
seen.add(rc.title);
var d = new Date(rc.timestamp);
var key =
d.getFullYear() + '年' +
(d.getMonth() + 1) + '月' +
d.getDate() + '日';
if (!grouped[key]) {
grouped[key] = [];
order.push(key);
}
grouped[key].push(rc.title);
});
right.innerHTML = `<h2 style="font-size:14px;margin:6px 0;">⌛ 最近の更新</h2>`;
order.slice(0, 5).forEach(date => {
var details = document.createElement('details');
details.open = true;
var summary = document.createElement('summary');
summary.textContent = date;
details.appendChild(summary);
var ul = document.createElement('ul');
ul.style.paddingLeft = '16px';
grouped[date].slice(0, 20).forEach(title => {
var li = document.createElement('li');
var a = document.createElement('a');
a.href = mw.util.getUrl(title);
a.textContent = title;
li.appendChild(a);
ul.appendChild(li);
});
details.appendChild(ul);
right.appendChild(details);
});
});
}
mw.hook('wikipage.content').add(setupDualSidebars);
})();