查看“MediaWiki:Common.js”的源代码
←
MediaWiki:Common.js
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
管理员
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/* ===================================================================== 帝鹰维基 · 全站脚本 v13 模块:① 顶部主导航 ② 管理员上传按钮 ③ ♪ 帝鹰电台(侧边栏) ④ 💬 帝鹰聊天室(侧边栏入口 + 弹层 iframe /chat/) ===================================================================== */ (function () { /* ---------- ① 顶部主导航:改入口就在 links 列表里,一行一个 ---------- */ var links = [ ['主站', 'Main_Page'], ['成员专区', '帝鹰核心成员'], ['组织章程', '组织章程'], ['史料归档', '聊天室记录归档'], ['分类', 'Special:Categories'] ]; function buildNav() { if (document.getElementById('dy-topnav')) return; var nav = document.createElement('nav'); nav.id = 'dy-topnav'; links.forEach(function (it) { var a = document.createElement('a'); a.href = mw.util.getUrl(it[1]); a.textContent = it[0]; nav.appendChild(a); }); var pageBase = document.getElementById('mw-page-base'); if (pageBase && pageBase.parentNode) { pageBase.parentNode.insertBefore(nav, pageBase); } else { document.body.insertBefore(nav, document.body.firstChild); } } /* ---------- ② 管理员专属:右下角「⬆ 上传图片」浮动按钮 ---------- */ function addUploadButton() { var groups = mw.config.get('wgUserGroups') || []; if (groups.indexOf('sysop') === -1) return; // 仅管理员可见 if (document.getElementById('dy-upbtn')) return; var a = document.createElement('a'); a.id = 'dy-upbtn'; a.href = mw.util.getUrl('Special:Upload'); a.textContent = '⬆ 上传图片/头像'; a.title = '管理员专用:从本地上传图片,传完把文件名填进卡片'; document.body.appendChild(a); } /* ---------- ③ ♪ 帝鹰电台(侧边栏模块) ---------- 曲库来自 /music-list.js(服务器定时生成,window.DY_MUSIC 数组: [{id,title,src},...]),音频文件在本站 /music/ 目录,跨页不断播由 浏览器自行决定;每个页面独立实例,点击播放即出声。 */ function addRadio(panel, logo) { if (document.getElementById('dy-radio')) return; var box = document.createElement('div'); box.id = 'dy-radio'; box.innerHTML = '<div class="dy-mod-h">♪ 帝鹰电台</div>' + '<div id="dy-r-title">曲库加载中…</div>' + '<div id="dy-r-ctl">' + '<button data-act="prev" title="上一首">⏮</button>' + '<button data-act="play" title="播放/暂停">▶</button>' + '<button data-act="next" title="下一首">⏭</button>' + '</div>'; if (logo && logo.nextSibling) panel.insertBefore(box, logo.nextSibling); else panel.appendChild(box); var list = [], idx = 0, audio = null, playing = false; var titleEl = box.querySelector('#dy-r-title'); var playBtn = box.querySelector('[data-act="play"]'); function ensureAudio() { if (audio) return; audio = new Audio(); audio.addEventListener('ended', function () { next(1); }); audio.addEventListener('playing', function () { playing = true; playBtn.textContent = '⏸'; }); audio.addEventListener('pause', function () { playing = false; playBtn.textContent = '▶'; }); } function show() { titleEl.textContent = list.length ? ('▶ ' + (idx + 1) + '. ' + list[idx].title) : '曲库为空'; } function play() { if (!list.length) return; ensureAudio(); var want = list[idx].src; if (audio.src !== location.origin + want && audio.getAttribute('src') !== want) { audio.src = want; // 首次/切歌:设置源 } if (playing) { audio.pause(); } else { audio.play(); } } function next(step) { if (!list.length) return; idx = (idx + step + list.length) % list.length; if (audio) { audio.src = list[idx].src; audio.play(); } show(); } box.addEventListener('click', function (e) { var act = e.target.getAttribute && e.target.getAttribute('data-act'); if (act === 'play') play(); else if (act === 'next') next(1); else if (act === 'prev') next(-1); }); // 曲库脚本:/music-list.js 内容为 window.DY_MUSIC=[...] var s = document.createElement('script'); s.src = '/music-list.js'; s.onload = function () { list = (window.DY_MUSIC || []).filter(function (m) { return m && m.src; }); show(); }; s.onerror = function () { titleEl.textContent = '电台曲库暂不可用'; }; document.head.appendChild(s); } /* ---------- ④ 💬 帝鹰聊天室(侧边栏入口 + 全屏弹层) ---------- 后端 = 同站 /chat/(api.php + index.html 自托管聊天室)。 主内容区不放聊天室,只有侧边栏这一个入口。 */ function addChat(panel, radio) { if (document.getElementById('dy-chat')) return; var box = document.createElement('div'); box.id = 'dy-chat'; box.innerHTML = '<div class="dy-mod-h">💬 帝鹰聊天室</div>' + '<button id="dy-chat-open">进入聊天室</button>'; if (radio && radio.nextSibling) panel.insertBefore(box, radio.nextSibling); else panel.appendChild(box); box.querySelector('#dy-chat-open').addEventListener('click', function () { var ov = document.getElementById('dy-chat-ov'); if (!ov) { ov = document.createElement('div'); ov.id = 'dy-chat-ov'; ov.innerHTML = '<div class="dy-chat-frame">' + '<div class="dy-chat-bar"><span>帝鹰聊天室</span>' + '<button id="dy-chat-close">✕ 关闭</button></div>' + '<iframe src="/chat/index.html" title="帝鹰聊天室"></iframe>' + '</div>'; document.body.appendChild(ov); ov.querySelector('#dy-chat-close').addEventListener('click', function () { ov.hidden = true; }); ov.addEventListener('click', function (e) { if (e.target === ov) ov.hidden = true; }); // 点空白处也可关 } ov.hidden = false; }); } /* ---------- 装配入口 ---------- */ function buildSide(panel) { var logo = document.getElementById('p-logo'); addRadio(panel, logo); addChat(panel, document.getElementById('dy-radio')); } function boot() { buildNav(); addUploadButton(); var panel = document.getElementById('mw-panel'); if (panel) buildSide(panel); } if (window.jQuery && mw && mw.util) { $(boot); } else { document.addEventListener('DOMContentLoaded', boot); } })();
该页面使用的模板:
模板:字体样式
(
查看源代码
)
模板:彩色文字
(
查看源代码
)
返回
MediaWiki:Common.js
。
导航菜单
个人工具
登录
命名空间
系统消息
讨论
English
查看
阅读
查看源代码
查看历史
更多
搜索
帝鹰网联
★ 主站
关于帝鹰
核心成员
组织章程
成员守则
入会须知
精日档案
百田尚树
元谷外志雄
樱井良子
西尾干二
铃木明
Ken Jebsen
史料纪事
发展沿革
组织风采
聊天记录归档
全部词条
最近更改
管理
⚙ 管理后台
工具
链入页面
相关更改
特殊页面
页面信息