注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
?_=1来访问最新页面。https://mzh.moegirl.org.cn/User:%E5%A6%B9%E7%A9%BA%E9%85%B1/LyricColorizition.js?_=1/*
此脚本功能为提供快速的歌词上色方法。
引入此脚本将在编辑页面右侧显示一个颜色管理面板。
点击并添加颜色即可。
'''本脚本属随手作品,代码无可读性,请勿参考'''。
本脚本仅支持现代浏览器。
本脚本依赖Wikiplus的前端组件。因此你需要启用Wikiplus。
使用说明:
单击颜色,可以将当前选中的文字使用color模板着色。再次单击可以取消上色。
双击颜色,可以删除这一颜色。
Ctrl+1~Ctrl+9将分别作为颜色的快捷键,例如Ctrl+1就是第一种颜色。
一些调用建议:
可以新建一个书签,内容为:
javascript:mw.loader.load('http://zh.moegirl.org/index.php?title=User:%E5%A6%B9%E7%A9%BA%E9%85%B1/LyricColorizition.js&action=raw&ctype=text/javascript');
需要本脚本时点击书签即可。
*/
/*
By: Eridanus Sora
*/
/* global Wikiplus */
/* global mw */
'use strict';
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
$(document).ready(function () {
var LC = (function () {
function LC(element) {
_classCallCheck(this, LC);
var self = this;
this.area = element;
this.colorList = [];
var controlPanel = $('<div>').css({
'position': 'fixed',
'top': '40%',
'right': '0px',
'min-height': '80px',
'min-width': '70px',
'width': 'auto',
'background-color': '#ffffff',
'border': '1px black solid'
}).addClass('LC-Container');
controlPanel.append(this.generateColorBlock('#FFFFFF', '添加颜色', function () {
Wikiplus.createDialogBox('添加颜色', $('<div>').append($('<input>').attr({ 'placeholder': '颜色', 'id': 'LC-ColorInput' })).append($('<br>')).append($('<input>').attr({ 'placeholder': '角色名', 'id': 'LC-CharaInput' })).append($('<hr>')).append($('<div>').addClass('Wikiplus-InterBox-Btn').attr('id', 'LC-Apply').text('确认')), 600, function () {
$('#LC-Apply').click(function () {
var color = $('#LC-ColorInput').val();
var chara = $('#LC-CharaInput').val();
$('.Wikiplus-InterBox-Close').click();
$('.LC-Add').before(self.generateColorBlock(color, chara, function () {
console.log(color + ' - ' + chara);
var text = self.area.val();
var start = self.area[0].selectionStart;
var end = self.area[0].selectionEnd;
if (start === end) return;
var selectedText = self.area.val().slice(start, end);
var regResult = selectedText.match(/^{{color[^]*\|[^]*\|([^.]+)[^]*}}$/m);
if (regResult !== null && regResult[1] !== undefined) {
//去除颜色
self.area.val('' + text.slice(0, start) + regResult[1] + text.slice(end, text.length));
self.area[0].setSelectionRange(start, start + regResult[1].length);
} else {
//加上去
self.area.val(text.slice(0, start) + '{{color|' + color + '|' + text.slice(start, end) + '}}' + text.slice(end, text.length));
self.area[0].setSelectionRange(start, end + 11 + color.length);
}
}));
});
});
}, 'LC-Add'));
$('body').append(controlPanel);
this.area.keydown(function (e) {
if (e.ctrlKey && 49 <= e.which && e.which <= 57) {
e.preventDefault();
$('.LC-Color')[e.which - 49] && $('.LC-Color')[e.which - 49].click();
}
});
}
_createClass(LC, [{
key: 'generateColorBlock',
value: function generateColorBlock(color, text, event) {
var className = arguments.length <= 3 || arguments[3] === undefined ? 'LC-Color' : arguments[3];
return $('<div>').css({
'width': '50px',
'height': '50px',
'margin': '10px',
'padding': '3px',
'font-size': '12px',
'line-height': '50px',
'font-weight': 'bold',
'text-align': 'center',
'float': 'left',
'background-color': color,
'border': '1px black solid',
'cursor': 'pointer'
}).text(text).addClass(className).click(event).dblclick(function () {
if (className !== 'LC-Color') return;
$(this).fadeOut('fast', function () {
$(this).remove();
});
});
}
}, {
key: 'throwError',
value: function throwError(message) {
var error = new Error();
console.log('[CRITICAL] ' + message);
console.log(error);
}
}]);
return LC;
})();
if (mw.config.values.wgAction === 'edit') {
console.log(new LC($('#wpTextbox1')));
}
});