为bwiki提供一个快捷工具栏,可以操作当前页面、快速进入其他常见页面。实现简单便于DIY。
当前为
// ==UserScript==
// @name List Util for BWiki
// @version 0.1.0
// @description 为bwiki提供一个快捷工具栏,可以操作当前页面、快速进入其他常见页面。实现简单便于DIY。
// @author Lu
// @match *://wiki.biligame.com/*
// @namespace https://greasyfork.org/users/416853
// @license CC BY-SA
// ==/UserScript==
/* 小工具的HTML部分,基于BWiki的bootcss的btn-group实现 */
var html = document.createElement('div');
html.innerHTML = `
<div id="list_util" class="btn-group-vertical" role="group">
<style>
#list_util{
position: fixed;
top: 55px !important;
left: 5px !important;
background: white;
z-index: 233;
}
#list_util .dropdown-menu{
min-width:100px;
left: 45px;
top: 0;
}
#list_util .dropdown-menu>li>a {
padding: 3px;
}
</style>
<div class="btn-group">
<button id="list_util_btn" class="lu-btn btn btn-default" style="padding: 0;" data-toggle="dropdown">工具</button>
<div class="dropdown-menu">
<p>2333333</p>
</div>
</div>
<div class="btn-group">
<button class="lu-btn btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
<span class="glyphicon glyphicon-user"></span>
</button>
<ul class="dropdown-menu">
<li><a id="lu-user" accesskey="u"><span class="glyphicon glyphicon-file"></span> 用户页面</a></li>
<li><a id="lu-preferences" accesskey="s"><span class="glyphicon glyphicon-cog"></span> 参数设置</a></li>
<li><a id="lu-mycontris"><span class="glyphicon glyphicon-edit"></span> 我的贡献</a></li>
<li><a id="lu-watchlist"><span class="glyphicon glyphicon-th-list"></span> 监视列表</a></li>
<li role="separator" class="divider"></li>
</ul>
</div>
<div class="btn-group">
<button class="lu-btn btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
<span class="glyphicon glyphicon-tasks"></span>
</button>
<ul class="dropdown-menu">
<li><a id="lu-specialpages"> 特殊页面</a></li>
<li><a id="lu-recentchanges"> 最近更改</a></li>
<li><a id="lu-allPages"> 所有页面</a></li>
<li><a id="lu-filelist"> 文件列表</a></li>
<li><a id="lu-contriscore"> 贡献得分</a></li>
<li role="separator" class="divider"></li>
<li><a id="lu-templates"> 模板</a></li>
<li><a id="lu-modules"> 模块</a></li>
</ul>
</div>
<div class="btn-group">
<button class="lu-btn btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
<span class="glyphicon glyphicon-tower"></span>
</button>
<ul class="dropdown-menu">
<li><a id="lu-moderation"> 版主审核</a></li>
<li><a id="lu-comments"> 管理评论</a></li>
<li role="separator" class="divider"></li>
</ul>
</div>
<div class="btn-group">
<button class="lu-btn btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
<span class="glyphicon glyphicon-wrench"></span>
</button>
<ul class="dropdown-menu">
<li><a id="lu-edit"> 编辑</a></li>
<li><a id="lu-history"> 历史</a></li>
<li><a id="lu-sortlink"> 短链接</a></li>
<li role="separator" class="divider"></li>
<li><a id="lu-purge"> 刷新</a></li>
<li><a id="lu-protect"> 保护</a></li>
<li><a id="lu-delete"> 删除</a></li>
<li role="separator" class="divider"></li>
<li><a id="lu-linkshere"> 入链</a></li>
<li><a id="lu-relatedchanges"> 相关更改</a></li>
<li role="separator" class="divider"></li>
<li><a id="lu-watch"> 监视</a></li>
<li><a id="lu-unwatch"> 取消监视</a></li>
<li><a id="lu-log"> 日志</a></li>
<li><a id="lu-info"> 信息</a></li>
<li><a id="lu-properties"> 属性</a></li>
<li role="separator" class="divider"></li>
</ul>
</div>
</div>
`;
document.body.appendChild(html);
/* 当前wiki的名称 */
var wikiurl = "https://wiki.biligame.com/" + mwcfg("wgGameName") + "/";
function mwcfg(key){/* 按key从mediaWiki获取配置 */
return mediaWiki.config.get(key);
}
function open(url) {/* 在新页面打开url */
window.open(url, '_blank').focus();
}
function onclick(elm_id, func) {/* 为ID元素增加点击事件 */
document.getElementById(elm_id).addEventListener("click", func);
}
function linkto(elm_id, url) {/* 为某ID的A元素增加href */
/*document.getElementById(elm_id).addEventListener("click", function(){
open(wikiurl + url);
});*/
document.getElementById(elm_id).href = wikiurl + url;
document.getElementById(elm_id).target = '_blank';
}
function addClickEvents(){ /* 为所有列表项添加A标签的href链接 */
var username = mwcfg("wgUserName");
var pagename = mwcfg("wgPageName");
var pageid = mwcfg("wgArticleId");
linkto("lu-user","用户:" + username);
linkto("lu-preferences","特殊:参数设置");
linkto("lu-mycontris","特殊:用户贡献/" + username);
linkto("lu-watchlist","特殊:监视列表");
linkto("lu-specialpages","特殊:特殊页面");
linkto("lu-recentchanges","特殊:最近更改");
linkto("lu-allPages","特殊:所有页面");
linkto("lu-filelist","特殊:文件列表");
linkto("lu-contriscore","特殊:贡献得分");
linkto("lu-templates","特殊:模板");
linkto("lu-modules","特殊:所有页面?namespace=828");
linkto("lu-moderation","特殊:Moderation");
linkto("lu-comments","特殊:管理FlowThread评论");
linkto("lu-purge",pagename + "?action=purge");
linkto("lu-edit",pagename + "?action=edit");
linkto("lu-delete",pagename + "?action=delete");
linkto("lu-protect",pagename + "?action=protect");
linkto("lu-history",pagename + "?action=history");
linkto("lu-watch",pagename + "?action=watch");
linkto("lu-unwatch",pagename + "?action=unwatch");
linkto("lu-info",pagename + "?action=info");
linkto("lu-sortlink","?curid=" + pageid);
linkto("lu-linkshere","特殊:链入页面/" + pagename);
linkto("lu-relatedchanges","Special:最近链出更改?target=" + pagename);
linkto("lu-log","Special:日志?page=" + pagename);
linkto("lu-properties","特殊:浏览/" + pagename);
}
/* main part */
try { // statements to try
console.log('开始初始化 List Util ');
addClickEvents();
/* fix .dropdown-menu css.
The BwikiBatchEditor remiss set css for all .dropdown-menu
Solution is :
when "#list_util .btn" is click, clear inline css for "#list_util .dropdown-menu".
*/
const lu_buttons = document.querySelectorAll('#list_util .btn');
lu_buttons.forEach(lu_btn => {
lu_btn.addEventListener('click', function(){
document.querySelectorAll('#list_util .dropdown-menu').forEach(menu => { menu.style=""; });
});
});
console.log('加载完成 List Util ');
}catch (e) {
console.log("List Util 遇到错误,异常退出……")
console.log("List Util 错误为:")
console.log(e)
try {
document.getElementById("list_util").outerHTML = "";
}catch (e) {}
}