사용자:Bd3076/common.js: 두 판 사이의 차이
백괴게임>Bd3076 (플러그인 testOfSomething설치) |
백괴게임>Bd3076 (플러그인 inputform설치) |
||
27번째 줄: | 27번째 줄: | ||
$( plugin_testOfSomething ); | $( plugin_testOfSomething ); | ||
/* testOfSomething 끝 */ | /* testOfSomething 끝 */ | ||
/** 플러그인 inputform*************************** | |||
* (베타 테스트) 완전한 입력기를 구현합니다. | |||
* 버전 => 1.6 | |||
* 작성자 : [[사용자:Gustmd7410|Gustmd7410]] | |||
* JSON => inputform = {"name":"inputform","descript":"(베타 테스트) 완전한 입력기를 구현합니다.","version":"1.6","local":false,"creat":"Gustmd7410","state":"틀:입력 상자/플러그인","executable":true}; | |||
*/ | |||
function plugin_inputform(){ | |||
// 이부분에 코드 입력 // | |||
mw.loader.using('oojs-ui-core').done(function () { | |||
function toBool(value) { | |||
switch (value) { | |||
case undefined: return false; | |||
case '': return true; | |||
} | |||
} | |||
function toArray(value) { | |||
if (value) | |||
return value.split(' '); | |||
else | |||
return undefined; | |||
} | |||
function InpTable(table) { | |||
this["case"] = {}; | |||
this["default"] = Object.assign({ | |||
prefix: '', | |||
value: undefined, | |||
suffix: '', | |||
replace: [], | |||
sub: [0] | |||
}, table["default"]); | |||
if (table["case"]) { | |||
for (var value in table["case"]) { | |||
this["case"][value] = Object.assign({}, this["default"], { value: this["default"].value || value }, table["case"][value]); | |||
} | |||
} | |||
} | |||
$('.input-form').each(function () { | |||
var container = this; | |||
$(this).html(new $('<form />', { | |||
"class": $(this).data('class'), | |||
id: $(this).data('id'), | |||
style: $(this).data('style'), | |||
'accept-charset': 'UTF-8', | |||
autocomplete: toBool($(this).data('autocomplete')), | |||
novalidate: toBool($(this).data('novalidate')), | |||
html: $(this).html() | |||
})); | |||
$(this).children('form').submit(function (event) { | |||
event.preventDefault(); | |||
var action = new URL('/w/index.php', location); | |||
if (toBool($(container).data('pass'))) | |||
action.search = location.search; | |||
if ($(container).data('get')) | |||
new URLSearchParams($(container).data('get')).forEach(function (value, key) { | |||
action.searchParams.set(key, value); | |||
}); | |||
action.searchParams.set('title', $(container).data('title')); | |||
$(this).children('.input-field').each(function () { | |||
if (typeof ($(this).data('table')) == 'object') { | |||
var name = $(this).data('name'); | |||
var rawval = $(this).find('input').val(); | |||
var table = new InpTable($(this).data('table')); | |||
var cvttbl = table["case"][rawval] || table["default"]; | |||
var cvtval = (cvttbl.value || rawval).slice(cvttbl.sub[0], cvttbl.sub[1]); | |||
cvttbl.replace.forEach(function (reparr) { | |||
var regex = reparr[0].substr(1).split('/'); | |||
regex.pop(); | |||
regex = regex.join('/'); | |||
var flag = reparr[0].substr(1).split('/').reverse()[0]; | |||
cvtval = cvtval.replace(new RegExp(regex, flag), reparr[1]); | |||
}); | |||
action.searchParams.set(name, cvttbl.prefix + cvtval + cvttbl.suffix); | |||
} | |||
else | |||
action.searchParams.set($(this).data('name'), $(this).find('input').val()); | |||
}); | |||
location.href = action.href; | |||
}); | |||
}); | |||
$('.input-field').each(function () { | |||
$(this).html(new OO.ui.TextInputWidget({ | |||
accessKey: $(this).data('accessKey'), | |||
autocomplete: toBool($(this).data('autocomplete')), | |||
autofocus: toBool($(this).data('autofocus')), | |||
classes: toArray($(this).data('classes')), | |||
disabled: toBool($(this).data('disabled')), | |||
flags: toArray($(this).data('flags')), | |||
icon: $(this).data('icon'), | |||
iconTitle: $(this).data('iconTitle'), | |||
id: $(this).data('id'), | |||
indicator: $(this).data('indicator'), | |||
indicatorTitle: $(this).data('indicatorTitle'), | |||
inputId: $(this).data('inputId'), | |||
maxLength: Number($(this).data('maxLength')), | |||
name: $(this).data('name'), | |||
placeholder: $(this).data('placeholder'), | |||
readOnly: toBool($(this).data('readOnly')), | |||
required: toBool($(this).data('required')), | |||
spellcheck: toBool($(this).data('spellcheck')), | |||
tabIndex: Number($(this).data('tabIndex')), | |||
text: $(this).data('text'), | |||
title: $(this).data('title'), | |||
type: $(this).data('type'), | |||
validate: (function(container) { | |||
if ($(container).data('validatetype') == 'RegExp') { | |||
var value = $(container).data('validate').substr(1).split('/'); | |||
return RegExp(value[0], value[1]); | |||
} | |||
else | |||
return $(container).data('validate'); | |||
})(this), | |||
value: $(this).data('value') | |||
}).$element); | |||
if(toBool($(this).data('inline'))) $(this).find('*').css({ | |||
display: 'inline', | |||
width: 'auto' | |||
}); | |||
}); | |||
$('.input-button').each(function () { | |||
$(this).html(new OO.ui.ButtonInputWidget({ | |||
accessKey: $(this).data('accessKey'), | |||
classes: toArray($(this).data('classes')), | |||
disabled: toBool($(this).data('disabled')), | |||
flags: toArray($(this).data('flags')), | |||
framed: toBool($(this).data('framed')), | |||
icon: $(this).data('icon'), | |||
iconTitle: $(this).data('iconTitle'), | |||
id: $(this).data('id'), | |||
indicator: $(this).data('indicator'), | |||
indicatorTitle: $(this).data('indicatorTitle'), | |||
inputId: $(this).data('inputId'), | |||
label: $(this).data('label'), | |||
name: $(this).data('name'), | |||
tabIndex: Number($(this).data('tabIndex')), | |||
text: $(this).data('text'), | |||
title: $(this).data('title'), | |||
type: $(this).data('type'), | |||
value: $(this).data('value') | |||
}).$element); | |||
}); | |||
noPlugin('input'); | |||
}); | |||
// 여기까지 코드 입력 // | |||
} | |||
$( plugin_inputform ); | |||
/* inputform 끝 */ |
2018년 8월 24일 (금) 18:57 판
/** 플러그인 testOfSomething***************************
* 플러그인의 용도
* 버전 => 0.02
* 작성자 : [[사용자:bd3076|bd3076]]
* JSON => testOfSomething = {"name":"testOfSomething","descript":"플러그인의 용도","version":"0.02","local":false,"creat":"bd3076","state":"사용자:Bd3076/그냥/plugin2","executable":true};
*/
function plugin_testOfSomething(){
// 이부분에 코드 입력 //
var dataOfSomethingStrange = "1";
// 여기까지 코드 입력 //
}
$( plugin_testOfSomething );
/* testOfSomething 끝 */
/** 플러그인 inputform***************************
* (베타 테스트) 완전한 입력기를 구현합니다.
* 버전 => 1.6
* 작성자 : [[사용자:Gustmd7410|Gustmd7410]]
* JSON => inputform = {"name":"inputform","descript":"(베타 테스트) 완전한 입력기를 구현합니다.","version":"1.6","local":false,"creat":"Gustmd7410","state":"틀:입력 상자/플러그인","executable":true};
*/
function plugin_inputform(){
// 이부분에 코드 입력 //
mw.loader.using('oojs-ui-core').done(function () {
function toBool(value) {
switch (value) {
case undefined: return false;
case '': return true;
}
}
function toArray(value) {
if (value)
return value.split(' ');
else
return undefined;
}
function InpTable(table) {
this["case"] = {};
this["default"] = Object.assign({
prefix: '',
value: undefined,
suffix: '',
replace: [],
sub: [0]
}, table["default"]);
if (table["case"]) {
for (var value in table["case"]) {
this["case"][value] = Object.assign({}, this["default"], { value: this["default"].value || value }, table["case"][value]);
}
}
}
$('.input-form').each(function () {
var container = this;
$(this).html(new $('<form />', {
"class": $(this).data('class'),
id: $(this).data('id'),
style: $(this).data('style'),
'accept-charset': 'UTF-8',
autocomplete: toBool($(this).data('autocomplete')),
novalidate: toBool($(this).data('novalidate')),
html: $(this).html()
}));
$(this).children('form').submit(function (event) {
event.preventDefault();
var action = new URL('/w/index.php', location);
if (toBool($(container).data('pass')))
action.search = location.search;
if ($(container).data('get'))
new URLSearchParams($(container).data('get')).forEach(function (value, key) {
action.searchParams.set(key, value);
});
action.searchParams.set('title', $(container).data('title'));
$(this).children('.input-field').each(function () {
if (typeof ($(this).data('table')) == 'object') {
var name = $(this).data('name');
var rawval = $(this).find('input').val();
var table = new InpTable($(this).data('table'));
var cvttbl = table["case"][rawval] || table["default"];
var cvtval = (cvttbl.value || rawval).slice(cvttbl.sub[0], cvttbl.sub[1]);
cvttbl.replace.forEach(function (reparr) {
var regex = reparr[0].substr(1).split('/');
regex.pop();
regex = regex.join('/');
var flag = reparr[0].substr(1).split('/').reverse()[0];
cvtval = cvtval.replace(new RegExp(regex, flag), reparr[1]);
});
action.searchParams.set(name, cvttbl.prefix + cvtval + cvttbl.suffix);
}
else
action.searchParams.set($(this).data('name'), $(this).find('input').val());
});
location.href = action.href;
});
});
$('.input-field').each(function () {
$(this).html(new OO.ui.TextInputWidget({
accessKey: $(this).data('accessKey'),
autocomplete: toBool($(this).data('autocomplete')),
autofocus: toBool($(this).data('autofocus')),
classes: toArray($(this).data('classes')),
disabled: toBool($(this).data('disabled')),
flags: toArray($(this).data('flags')),
icon: $(this).data('icon'),
iconTitle: $(this).data('iconTitle'),
id: $(this).data('id'),
indicator: $(this).data('indicator'),
indicatorTitle: $(this).data('indicatorTitle'),
inputId: $(this).data('inputId'),
maxLength: Number($(this).data('maxLength')),
name: $(this).data('name'),
placeholder: $(this).data('placeholder'),
readOnly: toBool($(this).data('readOnly')),
required: toBool($(this).data('required')),
spellcheck: toBool($(this).data('spellcheck')),
tabIndex: Number($(this).data('tabIndex')),
text: $(this).data('text'),
title: $(this).data('title'),
type: $(this).data('type'),
validate: (function(container) {
if ($(container).data('validatetype') == 'RegExp') {
var value = $(container).data('validate').substr(1).split('/');
return RegExp(value[0], value[1]);
}
else
return $(container).data('validate');
})(this),
value: $(this).data('value')
}).$element);
if(toBool($(this).data('inline'))) $(this).find('*').css({
display: 'inline',
width: 'auto'
});
});
$('.input-button').each(function () {
$(this).html(new OO.ui.ButtonInputWidget({
accessKey: $(this).data('accessKey'),
classes: toArray($(this).data('classes')),
disabled: toBool($(this).data('disabled')),
flags: toArray($(this).data('flags')),
framed: toBool($(this).data('framed')),
icon: $(this).data('icon'),
iconTitle: $(this).data('iconTitle'),
id: $(this).data('id'),
indicator: $(this).data('indicator'),
indicatorTitle: $(this).data('indicatorTitle'),
inputId: $(this).data('inputId'),
label: $(this).data('label'),
name: $(this).data('name'),
tabIndex: Number($(this).data('tabIndex')),
text: $(this).data('text'),
title: $(this).data('title'),
type: $(this).data('type'),
value: $(this).data('value')
}).$element);
});
noPlugin('input');
});
// 여기까지 코드 입력 //
}
$( plugin_inputform );
/* inputform 끝 */