백괴게임>Bd3076 |
백괴게임>Bd3076 |
1번째 줄: |
1번째 줄: |
| /**
| |
| * pluginX Core
| |
| * pluginX 시스템이 제대로 돌아가게 해 줍니다.
| |
| * 작성자: [[사용자:Bd3076|Bd3076]]
| |
| */
| |
|
| |
|
| function pluginXCore() {
| |
| var _afterLoad = function(){};
| |
|
| |
| var _ready_for_ready = function(){
| |
| setTimeout(_ready_pluginX, 1000);
| |
| };
| |
|
| |
| var _ready_pluginX = function(){
| |
| document.getElementById('firstHeading').innerHTML = "플러그인 문서를 생성하시려면 아래의 <strong>바꾸기</strong> 버튼을 누르세요.";
| |
| $('#ooui-4').css('display', 'none');
| |
| $('#ooui-5').css('display', 'none');
| |
| $('#ooui-6').css('display', 'none');
| |
| };
| |
|
| |
| if(mw.config.get('wgPageName').substr(0, 11) == "특수:콘텐츠모델바꾸기"){
| |
| var url = new URL(window.location);
| |
| var mode = url.searchParams.get('mode');
| |
| if(mode == 'usingPluginX'){
| |
| _afterLoad = _ready_for_ready;
| |
| }
| |
| }
| |
|
| |
| $(_afterLoad());
| |
|
| |
| var api = MediaWikiAPI();
| |
|
| |
|
| |
| var script_list = [];
| |
| var pluginExist = false;
| |
| var html_before;
| |
| var jsonDoc = "사용자:" + mw.config.get("wgUserName") + "/pluginX.json";
| |
| var jsonData = api.getDocument(jsonDoc);
| |
|
| |
| console.log(jsonData);
| |
|
| |
| /// 플러그인의 정보가 담긴 데이터를 만듭니다.
| |
| var generateScriptData = function(_url, _name, _creator, _doc, _script, _revid){
| |
| return {
| |
| url: _url,
| |
| name: _name,
| |
| creator: _creator,
| |
| doc: _doc,
| |
| script: _script,
| |
| revid: _revid
| |
| };
| |
| };
| |
|
| |
| /// 플러그인 목록을 만들어서 script_list[]에 담습니다.
| |
| var getPluginList = function(){
| |
| $(".c_pluginX").each(function() {
| |
| var url = $(this).attr('data-url');
| |
| var name = $(this).attr('data-name');
| |
| var creator = $(this).attr('data-creator');
| |
| var doc = $(this).attr('data-doc');
| |
| var revid = $(this).attr('data-revid');
| |
|
| |
| var script = api.getDocument(doc);
| |
| console.log("Code: " + script);
| |
|
| |
| if(!(jsonData.hasOwnProperty(doc) && jsonData[doc] != revid)){
| |
| pluginExist = true;
| |
|
| |
| script_list.push(generateScriptData(url, name, creator, doc, script, revid));
| |
| }
| |
| });
| |
| };
| |
|
| |
| /// 플러그인을 실행합니다.
| |
| var executePlugins = function(){
| |
| setCookie('revIds', allRevId);
| |
| document.getElementById('mw-content-text').innerHTML = html_before;
| |
|
| |
| script_list.forEach(function(data){
| |
| var link = data.url;
| |
| var revid = data.revid;
| |
| var doc = data.doc;
| |
| if(jsonData[doc].hasOwnProperty(doc)) jsonData[doc] = revid;
| |
| else jsonData[doc] = revid;
| |
| $.getScript(link);
| |
| });
| |
|
| |
| api.changeDocument(jsonDoc, "pluginX - 새로운 플러그인", jsonData);
| |
| };
| |
|
| |
| /// 플러그인을 실행하지 않습니다.
| |
| var doNotExecutePlugins = function(){
| |
| document.getElementById('mw-content-text').innerHTML = html_before;
| |
| };
| |
|
| |
| /// 알림 창을 만듭니다.
| |
| var showWindow = function(){
| |
| html_before = document.getElementById('mw-content-text').innerHTML;
| |
| $('#mw-content-text').html(api.readDocument("틀:PluginX/setup"));
| |
| var script = "";
| |
|
| |
| script_list.forEach(function(data){
| |
| var addingCode;
| |
| addingCode = '<div class="px-code"><pre>';
| |
| addingCode = addingCode.concat(((data.script.replace('&', '&')).replace('<', '<')).replace('>', '>'));
| |
| addingCode = addingCode.concat('</pre> </div> <div class="px-codeinfo"> <ul> <li> 플러그인 이름: ');
| |
| addingCode = addingCode.concat(data.name);
| |
| addingCode = addingCode.concat('</li> <li> 플러그인 제작자: ');
| |
| addingCode = addingCode.concat(data.creator);
| |
| addingCode = addingCode.concat('</li> </ul> </div>');
| |
|
| |
| console.log(addingCode);
| |
|
| |
| script += addingCode;
| |
| });
| |
|
| |
| document.getElementById('px-script').innerHTML = script;
| |
|
| |
| $('#px-button').on('click', executePlugins);
| |
| $('#px-button2').on('click', doNotExecutePlugins);
| |
| };
| |
|
| |
| getPluginList();
| |
|
| |
| if(pluginExist === false) return;
| |
|
| |
| showWindow();
| |
| }
| |
| $(pluginXCore());
| |
|
| |
| /* pluginX Core 끝 */
| |