編集の要約なし タグ: 手動差し戻し 差し戻し済み |
編集の要約なし |
||
(同じ利用者による、間の49版が非表示) | |||
151行目: | 151行目: | ||
// | // ユーザー名歓迎表示(メインページ限定) | ||
mw.hook('wikipage.content').add(function () { | |||
if ( | |||
mw.config.get('wgUserName') && | |||
mw.config.get('wgPageName') === 'メインページ' | |||
) { | |||
const msg = 'おかえりなさい、' + mw.config.get('wgUserName') + ' さん!'; | |||
$('<div>') | |||
.text(msg) | |||
.css({ | |||
textAlign: 'center', | |||
fontSize: '20px', | |||
background: '#43C2E8', | |||
color: '#fff', | |||
padding: '8px', | |||
borderRadius: '8px', | |||
marginBottom: '10px' | |||
}) | |||
.prependTo('#mw-content-text'); | |||
} | |||
}); | }); | ||
264行目: | 277行目: | ||
document.documentElement.setAttribute('data-theme', 'light'); | document.documentElement.setAttribute('data-theme', 'light'); | ||
} | } | ||
}); | |||
//関連記事を全記事のフッターに自動表示する機能 停止中 | |||
//FANBOX支援ボタン | |||
mw.loader.using(['mediawiki.util']).then(function () { | |||
function insertFanboxButton() { | |||
var footer = document.querySelector('.citizen-footer'); | |||
if (!footer) { | |||
console.warn('footer未検出、再試行します...'); | |||
setTimeout(insertFanboxButton, 300); | |||
return; | |||
} | |||
// 二重挿入防止 | |||
if (document.querySelector('.fanbox-button')) return; | |||
var btn = document.createElement('a'); | |||
btn.href = 'https://u-stella.fanbox.cc/'; | |||
btn.target = '_blank'; | |||
btn.rel = 'noopener'; | |||
btn.textContent = ' 💎 100円から応援できて、特典いっぱい! いつも支えてくれて本当にありがとう。ユーステラは、FANBOXで全部が動いてるよ。'; | |||
btn.className = 'fanbox-button'; | |||
// 古い方法でスタイルを直書き | |||
btn.style.display = 'inline-block'; | |||
btn.style.backgroundColor = '#43C2E8'; | |||
btn.style.color = 'white'; | |||
btn.style.padding = '0.6em 1.4em'; | |||
btn.style.borderRadius = '999px'; | |||
btn.style.textDecoration = 'none'; | |||
btn.style.fontWeight = 'bold'; | |||
btn.style.margin = '1em auto'; | |||
footer.appendChild(btn); | |||
console.log('✅ FANBOXボタン追加済み'); | |||
} | |||
mw.hook('wikipage.content').add(function () { | |||
insertFanboxButton(); | |||
}); | |||
}); | }); |
2025年4月15日 (火) 13:31時点における最新版
mw.hook('wikipage.content').add(function ($content) { // すべての中身をここに入れて動かす $(function () { // Citizenスキンの「案内」セクションを検出して削除 $(".mw-portlet h3").each(function () { const heading = $(this); if (heading.text().trim() === "案内") { heading.closest(".mw-portlet").remove(); } }); }); $(function () { $(".sidebar-group").each(function () { const group = $(this); const heading = group.find("h2").first().text().trim(); if (heading === "案内") { group.remove(); } }); }); $(function () { $(".citizen-menu__heading").each(function () { if ($(this).text().trim() === "案内") { $(this).next(".citizen-menu__content").remove(); // 中身消す $(this).remove(); // 見出しも消す } }); }); //メインページだけ読了目安を無効化 $(function () { if ( mw.config.get('ReadingTimeDisabled') ) { $('.read-time-box, .citizen-page-info-readtime').remove(); } }); //折り畳み機能 $(function () { $(".mw-collapsible").each(function () { const $block = $(this); const $toggle = $('<a href="#" style="float:right;">[開く]</a>'); $toggle.on("click", function (e) { e.preventDefault(); $block.toggleClass("collapsed"); $block.find("ul").slideToggle(); $toggle.text($block.hasClass("collapsed") ? "[開く]" : "[閉じる]"); }); $block.prepend($toggle); if ($block.hasClass("mw-collapsed")) { $block.addClass("collapsed"); $block.find("ul").hide(); } }); }); $(function () { $(".u-stella-box").each(function () { const $block = $(this); const $toggle = $('<a href="#" style="float:right; font-size:90%;">[+]</a>'); $toggle.on("click", function (e) { e.preventDefault(); $block.toggleClass("collapsed"); $block.find("ul").slideToggle(); $toggle.text($block.hasClass("collapsed") ? "[+]" : "[-]"); }); $block.prepend($toggle); if ($block.hasClass("collapsed")) { $block.find("ul").hide(); } }); }); // 全角スペースを黒四角に mw.hook('wikipage.content').add(function ($content) { $content.find('.mw-parser-output').each(function () { const $this = $(this); const html = $this.html().replace(/ /g, '■'); $this.html(html); }); }); // スクロール進捗バー $(function(){ var progressBar = $('<div id="progress-bar"></div>').css({ position:'fixed', top:'0', left:'0', height:'4px', background:'#6cf', width:'0%', zIndex:1000 }).appendTo('body'); $(window).scroll(function(){ var winScroll = $(window).scrollTop(); var height = $(document).height() - $(window).height(); var scrolled = (winScroll / height) * 100; progressBar.css('width', scrolled + '%'); }); }); // 読了時間表示(メインページは除外) $(function () { // メインページなら何もしない if (mw.config.get('wgPageName') === 'メインページ') return; var text = $('#mw-content-text').text(); var minutes = Math.ceil(text.length / 500); // 500文字/分で計算 $('<div id="read-time">⏳ 読了目安: ' + minutes + '分</div>').css({ padding: '5px', background: '#e2f0ff', borderRadius: '5px', display: 'inline-block', marginBottom: '10px' }).prependTo('#mw-content-text'); }); // スムーズスクロール $(function(){ $('a[href^="#"]').click(function(e){ e.preventDefault(); var target = $(this.hash); if(target.length){ $('html, body').animate({scrollTop:target.offset().top},600); } }); }); // ツールチップ機能 $(function(){ $('[data-tooltip]').hover(function(){ var tooltip = $('<div class="tooltip"></div>').text($(this).attr('data-tooltip')).css({ position: 'absolute', background: '#444', color: '#fff', padding: '4px 8px', borderRadius: '5px', zIndex: 1000, whiteSpace: 'nowrap' }).appendTo('body').hide().fadeIn(200); $(this).mousemove(function(e){ tooltip.css({top:e.pageY+10, left:e.pageX+10}); }); }, function(){ $('.tooltip').fadeOut(200,function(){ $(this).remove(); }); }); }); // ユーザー名歓迎表示(メインページ限定) mw.hook('wikipage.content').add(function () { if ( mw.config.get('wgUserName') && mw.config.get('wgPageName') === 'メインページ' ) { const msg = 'おかえりなさい、' + mw.config.get('wgUserName') + ' さん!'; $('<div>') .text(msg) .css({ textAlign: 'center', fontSize: '20px', background: '#43C2E8', color: '#fff', padding: '8px', borderRadius: '8px', marginBottom: '10px' }) .prependTo('#mw-content-text'); } }); // 折りたたみ可能セクション $(function() { $('.mw-headline').click(function() { $(this).parent().nextUntil('h2, h3, h4, h5, h6').slideToggle(); }).css('cursor', 'pointer'); }); // 目次トグル機能追加 $(function(){ var toc = $('#toc'); if(toc.length){ toc.before('<button id="toggle-toc">目次を開閉</button>'); $('#toggle-toc').css({ margin: '5px', padding: '3px 6px', cursor: 'pointer' }).click(function(){ toc.slideToggle(); }); } }); // 外部リンクを新規タブで開く $(function() { $('a.external').attr('target', '_blank'); }); // ユーステラ風✨星キラキラカーソル(頻度調整+水色強化版) var lastStarTime = 0; $(document).mousemove(function(e) { var now = Date.now(); if (now - lastStarTime < 100) return; // 出現頻度を調整(100を大きくすればさらに少なくなる) lastStarTime = now; var colors = ['#6ff', '#9cf', '#cff', '#8df', '#7af']; // より水色っぽく調整 var star = $('<div>').text('✦').css({ position: 'absolute', top: e.pageY - 10, left: e.pageX - 10, color: colors[Math.floor(Math.random() * colors.length)], fontSize: '14px', pointerEvents: 'none', opacity: 1, zIndex: 9999, userSelect: 'none', textShadow: '0 0 6px #8df, 0 0 12px #6ff' }).appendTo('body'); star.animate({ top: e.pageY - (Math.random() * 40 - 20), left: e.pageX - (Math.random() * 40 - 20), opacity: 0, fontSize: '4px' }, 1000, function() { $(this).remove(); }); }); }); // h2-h4の埋め込みリンクを剥がす $(function () { // 対象:h3〜h4の .mw-headline 内にあるリンクだけ $('h3 .mw-headline > a, h4 .mw-headline > a').each(function () { const text = $(this).text(); // リンクの中身を取り出して $(this).replaceWith(text); // リンクをプレーンテキストに置き換える }); }); //転送先Popups mw.loader.using(['jquery', 'mediawiki.api']).then(function () { $(document).on('mouseover', 'a', function () { const $link = $(this); const title = $link.attr('title'); if (!title || $link.hasClass('mw-redirect')) return; // 転送元だけ対応 const api = new mw.Api(); api.get({ action: 'query', titles: title, redirects: 1, format: 'json' }).then(function (data) { const pages = data.query.pages; const page = Object.values(pages)[0]; if (page.redirects && page.redirects.length > 0) { const target = page.redirects[0].to; // Popupsの data-title を書き換えて、強制的に転送先にする $link.attr('data-title', target); $link.attr('title', target); } }); }); }); //未ログインユーザーは強制ライト mw.loader.using('mediawiki.user').then(function () { if (!mw.config.get('wgUserName')) { document.documentElement.setAttribute('data-theme', 'light'); } }); //関連記事を全記事のフッターに自動表示する機能 停止中 //FANBOX支援ボタン mw.loader.using(['mediawiki.util']).then(function () { function insertFanboxButton() { var footer = document.querySelector('.citizen-footer'); if (!footer) { console.warn('footer未検出、再試行します...'); setTimeout(insertFanboxButton, 300); return; } // 二重挿入防止 if (document.querySelector('.fanbox-button')) return; var btn = document.createElement('a'); btn.href = 'https://u-stella.fanbox.cc/'; btn.target = '_blank'; btn.rel = 'noopener'; btn.textContent = ' 💎 100円から応援できて、特典いっぱい! いつも支えてくれて本当にありがとう。ユーステラは、FANBOXで全部が動いてるよ。'; btn.className = 'fanbox-button'; // 古い方法でスタイルを直書き btn.style.display = 'inline-block'; btn.style.backgroundColor = '#43C2E8'; btn.style.color = 'white'; btn.style.padding = '0.6em 1.4em'; btn.style.borderRadius = '999px'; btn.style.textDecoration = 'none'; btn.style.fontWeight = 'bold'; btn.style.margin = '1em auto'; footer.appendChild(btn); console.log('✅ FANBOXボタン追加済み'); } mw.hook('wikipage.content').add(function () { insertFanboxButton(); }); });