< 利用者:野獣2世
編集の要約なし |
編集の要約なし |
||
| 2行目: | 2行目: | ||
'use strict'; | '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;"> | <div style="font-family:inherit;font-size:12px;line-height:1.4;"> | ||
<h2 style="font-size:14px;margin:6px 0;">📌 メニュー</h2> | <h2 style="font-size:14px;margin:6px 0;">📌 メニュー</h2> | ||
<ul style="padding-left:18px;margin:0 0 8px | <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:お知らせ">お知らせ</a></li> | <li><a href="/wiki/Hikakin_Mania_Wiki:お知らせ">お知らせ</a></li> | ||
| 23行目: | 26行目: | ||
</ul> | </ul> | ||
<details | <details open> | ||
<summary>🛠 編集者向け</summary> | <summary>🛠 編集者向け</summary> | ||
<ul style="padding-left:18px;margin:6px | <ul style="padding-left:18px;margin:6px 0 0;"> | ||
<li><a href="/wiki/Hikakin_Mania_Wiki:管理人問い合わせフォーム"> | <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:サンドボックス"> | <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> | </ul> | ||
</details> | </details> | ||
<h2 style="font-size:14px;margin: | <h2 style="font-size:14px;margin:8px 0 4px;">🧰 ツール</h2> | ||
<ul style="padding-left:18px;margin: | <ul style="padding-left:18px;margin:0;"> | ||
<li><a href="/wiki/${pageName}?action=purge">キャッシュ削除</a></li> | <li><a href="/wiki/${pageName}?action=purge">キャッシュ削除</a></li> | ||
<li><a href="/wiki/特別:リンク元/${pageName}">リンク元</a></li> | <li><a href="/wiki/特別:リンク元/${pageName}">リンク元</a></li> | ||
<li><a href="/index.php?title=${pageName}&action=info">ページ情報</a></li> | <li><a href="/index.php?title=${pageName}&action=info">ページ情報</a></li> | ||
</ul> | </ul> | ||
</div>`; | |||
articleBody.prepend(left); | |||
} | |||
/* ========== 右サイドバー(最近の更新) ========== */ | |||
if (document.getElementById('right-sidebar')) return; | |||
var right = document.createElement('aside'); | |||
right.id = 'right-sidebar'; | |||
right.innerHTML = ` | |||
</div> | <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); | |||
mw.hook('wikipage.content').add( | |||
})(); | })(); | ||
2026年1月9日 (金) 13:15時点における最新版
(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);
})();