提供: Japanese Scratch-Wiki

< 利用者:227kei

(まじですか...)
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
 
/*
 
/*
    このJavaScriptはCC0です。
+
このスクリプトはCC0です。
    ほかの場所で使う場合、動作の保障はありません。自己責任で使用してください。
+
使用する場合は自己責任で使用してください。
 
*/
 
*/
const errorList = [];
+
document.querySelector("#navigation > div > ul > li.link.explore > ul").insertAdjacentHTML("beforeend","<li><a href='https://ja.scratch-wiki.info/wiki/メインページ'><span>ホームへ戻る</span></a></li>");
window.addEventListener("error",function(e){
+
document.querySelector("#navigation > div > ul > li.link.create > ul").insertAdjacentHTML("beforeend","<li><a href='https://ja.scratch-wiki.info/wiki/Japanese_Scratch-Wiki:作成すべき100の記事'><span>作成すべき100の記事</span></a></li><li><a href='https://ja.scratch-wiki.info/wiki/カテゴリ:3.0アップデートによる大規模変更予定ページ'><span>3.0アップデートによる大規模変更予定ページ</span></a></li><li><a href='https://ja.scratch-wiki.info/wiki/カテゴリ:スタブ'><span>スタブ</span></a></li>");
    errorList.push(e.message);
+
["tips","discuss","about"].forEach(function(i){
 +
document.getElementsByClassName(i)[0].style.display = "none";
 
});
 
});
console.info("loading:common.js");
+
if(mw.config.get("wgAction") === "edit"){
const wiki = {};
+
["feet","footer"].forEach(function(i){
wiki.getSkin = function(){
+
document.getElementById(i).style.display = "none";
    return mw.config.get("skin");
+
});
 +
document.querySelector("#view .left").style.display = "none";
 +
document.querySelector("#view .right").style.margin = "0px";
 +
document.querySelector("#view .right").style.width = "100%";
 +
document.querySelector("#view > div > div").style.width = "80%";
 +
document.getElementById("wikiPreview").style.width = "800px";
 +
document.getElementById("wpSummary").addEventListener("focus",function(){
 +
this.select();
 +
});
 +
if(!document.getElementById("wpSummary").value)document.getElementById("wpSummary").value = "/*  */";
 
}
 
}
wiki.getAction = function(){
 
    return mw.config.get("wgAction");
 
}
 
wiki.getCategory = function(){
 
    return mw.config.get("wgCategories");
 
}
 
wiki.isArticle = function(){
 
    return mw.config.get("wgIsArticle");
 
}
 
wiki.isRedirect = function(){
 
    return mw.config.get("wgIsRedirect");
 
}
 
wiki.pageName = function(){
 
    return mw.config.get("wgPageName");
 
}
 
wiki.pageNamespace = function(){
 
    return mw.config.get("wgNamespaceNumber");
 
}
 
wiki.userName = function(){
 
    return mw.config.get("wgUserName");
 
}
 
wiki.userEditNumber = function(){
 
    return mw.config.get("wgUserEditCount");
 
}
 
const fireEvent = function(name){
 
    var event = null;
 
    name = name + (name?"_":"");
 
    if(wiki.pageNamespace() === -1){ /* 特別 */
 
        event = new CustomEvent(name + "special");
 
    }else if(wiki.pageNamespace() === 0){ /* 無名 */
 
        event = new CustomEvent(name + "normal");
 
    }else if(wiki.pageNamespace() === 1){ /* 議論 */
 
        event = new CustomEvent(name + "talk");
 
    }else if(wiki.pageNamespace() === 2){ /* 利用者 */
 
        event = new CustomEvent(name + "user");
 
    }else if(wiki.pageNamespace() === 6){ /* ファイル */
 
        event = new CustomEvent(name + "file");
 
    }else if(wiki.pageNamespace() === 10){ /* テンプレート */
 
        event = new CustomEvent(name + "template");
 
    }else if(wiki.pageNamespace() === 12){ /* ヘルプ */
 
        event = new CustomEvent(name + "help");
 
    }else if(wiki.pageNamespace() === 14){ /* カテゴリ */
 
        event = new CustomEvent(name + "category");
 
    }
 
    window.dispatchEvent(event);   
 
}
 
document.body.insertAdjacentHTML("afterbegin",'<div style="position:fixed;top:0px;left:0px;width:20%;" id="editor_tool"></div>');
 
let def = {};
 
def.search =function(val){
 
    location.href = "https://ja.scratch-wiki.info/w/index.php?title=特別:検索&search=" + val + "&fulltext=検索&profile=all";
 
}
 
def.template1 = function(){
 
    document.head.insertAdjacentHTML("beforeend","<style type='text/css'>.summary + div{display:none;}.summary:focus,.summary + div:focus{display:block;}</style>");
 
    document.getElementById("editor_tool").insertAdjacentHTML("afterend","\
 
            <details style='background:#ccc;box-shadow: 0 0 3px rgba(0,0,0,0.25);'>\
 
                <summary>ツールバーを展開&emsp;\
 
                    <input onchange=def.search(this.value); placeholder='すべてを対象に検索'>&emsp;\
 
                    <span onclick=def.editMode();>編集モードに移行</span>&nbsp;\
 
                    <a href='https://ja.scratch-wiki.info/wiki/メインページ'>メインページへ</a>\
 
                </summary>\
 
                <div>\
 
                    <span onclick='def.errorList();'>ハンドルされたエラー</span>&ensp;\
 
                    <span onclick='def.scratchPad();'>JavaScriptスクラッチパッド</span>&ensp;\
 
                    <span onclick='def.sbPad();'>ブロックプラグインテスト</span>&ensp;\
 
                </div>\
 
                <div>\
 
                    <ul style='list-style:none;'>\
 
                        <li><a href='/wiki/特別:特別ページ一覧'>特別ページ一覧</a></li>\
 
                        <li><a href='/wiki/特別:最近の更新'>最近の更新</a></li>\
 
                        <li><a href='/wiki/特別:アップロード'>ファイルをアップロード</a></li>\
 
                        <li><a href='/wiki/特別:不正利用フィルター'>ファイルをア不正利用フィルターの管理と記録</a></li>\
 
                        <li><a href='/wiki/JS:CP'>コミュニティーポータル</a></li>\
 
                    </ul>\
 
                    <div>\
 
                        <a href='https://ja.scratch-wiki.info/w/index.php?title=利用者:227kei/common.js&action=edit'>common.jsを管理します</a>\
 
                    </div>\
 
                </div>\
 
            </details>");
 
}
 
def.editMode = function(){
 
    document.body.insertAdjacentHTML("afterbegin","<style>#navigation,#footer,#view > div > div > div.left{display:none !important;}#content,#wpTextbox1{font-size:1.1em;font-family:monospace,'メイリオ',sans-serif;}#box{position:fixed;top:10px;left:10px;width:calc(100% - 20px);}</style>");
 
}
 
def.scratchPad = function(){
 
    document.body.insertAdjacentHTML("afterbegin",'<div style="background:rgba(0,0,0,0.2);"><textarea onblur="console.info(eval(this.value));" placeholder="JavaScript" style="width:90%;"></textarea></div>');
 
}
 
def.sbPad = function(){
 
    document.body.insertAdjacentHTML("afterbegin",'<div style="background:rgba(0,0,0,0.2);"><textarea onblur="console.info(eval(this.value));" placeholder="ブロックプラグインコード" style="width:90%;"></textarea><div id="sb_output"></div></div>');
 
    document.getElementById("sb_code").addEventListener("keyup",function(e){
 
        let content = this.value;
 
        const output = document.getElementById("sb_output");
 
        content = content.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/(\n\r|\r\n|\r|\n){2}/g,"<br>");
 
        {
 
            const matchReg = new RegExp("={2,4}");
 
            while(content.match(matchReg)){
 
                const result = content.match(/={2,4}/g);
 
                if(result.length > 0 && (result.length % 2) === 0){
 
                    content = content.replace(matchReg,"<h" + result[0].length + ">");
 
                    content = content.replace(matchReg,"</h" + result[0].length + ">");
 
                }else{
 
                    break;
 
                }
 
            }
 
        }
 
        {
 
            const matchReg = new RegExp("'{3}");
 
            while(content.match(matchReg)){
 
                const result = content.match(/'{3}/g);
 
                if(result.length > 0 && (result.length % 2) === 0){
 
                    content = content.replace(matchReg,'<span style="font-weight:bold;">');
 
                    content = content.replace(matchReg,'</span>');
 
                }else{
 
                    break;
 
                }
 
            }
 
        }
 
        const evalHTMLTag = (tagName) => {
 
            {
 
                const reg = new RegExp("&lt;\\s*" + tagName + ".*?&gt;","gi");
 
                const matchs = content.match(reg);
 
                if(matchs){
 
                    matchs.forEach(i => {
 
                        content = content.replace(i,"<" + i.slice(4,-4) + ">");
 
                    });
 
                }
 
            }
 
            {
 
                const reg = new RegExp("&lt;\\s*\/\\s*" + tagName + ".*?&gt;","gi");
 
                const matchs = content.match(reg);
 
                if(matchs){
 
                    matchs.forEach(i => {
 
                        content = content.replace(i,"<" + i.slice(4,-4) + ">");
 
                    });
 
                }
 
            }
 
        }
 
        evalHTMLTag("div");
 
        evalHTMLTag("span");
 
        evalHTMLTag("sb");
 
        evalHTMLTag("scratchblocks");
 
        output.innerHTML = content;
 
        const evalSB = (eleName,{style,inline,scale} = {}) => {
 
            const sbtag = dom.getByTagName(eleName,output);
 
            for(const i of sbtag){
 
                const doc = scratchblocks.parse(i.innerHTML,{
 
                    languages:['ja','en'],
 
                    inline
 
                });
 
                const docView = scratchblocks.newView(doc, {
 
                    style:"scratch" + (style || 3),
 
                });
 
                const svg = docView.render();
 
                i.insertAdjacentElement("afterend",svg);
 
                if(scale){
 
                    svg.setAttribute("width",svg.clientWidth * scale);
 
                    svg.setAttribute("height",svg.clientHeight * scale);
 
                    svg.setAttribute("viewBox","0 0 " + svg.clientWidth / scale + " " + svg.clientHeight / scale);
 
                }
 
                if(inline){
 
                    svg.style.verticalAlign = "top";
 
                }
 
                dom.remove(i);
 
            }
 
        }
 
        evalSB("scratchblocks");
 
        evalSB("sb",{inline:true});
 
        });
 
}
 
def.errorList = function(){
 
    document.body.insertAdjacentHTML("afterbegin",'<div style="background:rgba(0,0,0,0.2);" id="errorList"></div>');
 
    errorList.forEach(i => {
 
        document.getElementById("errorList").insertAdjacentHTML("afterend","<div style='border-bottom:1px solid #555;background:#ccc;'>" + e + "</div>");
 
    });
 
}
 
console.info("setup:common.js");
 
window.addEventListener("load",function(){
 
    var event = "";
 
    switch(wiki.getAction()){
 
        case "view":
 
            console.info("work:common.js/view");
 
            event = new CustomEvent("view");
 
            window.dispatchEvent(event);
 
            fireEvent("view");
 
            break;
 
        case "edit":
 
            console.info("work:common.js/edit");
 
            event = new CustomEvent("edit");
 
            window.dispatchEvent(event);
 
            fireEvent("edit");
 
            break;
 
        case "history":
 
            console.info("work:common.js/history");
 
            event = new CustomEvent("history");
 
            window.dispatchEvent(event);
 
            fireEvent("his");
 
            break;
 
    }
 
    fireEvent();
 
    event = null;
 
});
 
window.addEventListener("view",function(){
 
    console.info("catch:common.js/onView");
 
    def.template1();
 
});
 
window.addEventListener("edit",function(){
 
    console.info("catch:common.js/onEdit");
 
    def.template1();
 
});
 
window.addEventListener("edit_talk",function(){
 
    console.info("catch:common.js/onEdit.Talk");
 
    document.getElementById("editor_tool").insertAdjacentHTML("afterend","<center style='background:rgba(0,0,0,0.2);'><b>署名を忘れないでください。</b></center>署名忘れ:<code><nowiki>{{unsigned2|ユーザー名|XXXX-0X-XX XX:XXJST}}</nowiki></code>");
 
});
 
console.info("loaded:common.js");
 

2021年3月20日 (土) 01:13時点における最新版

/*
	このスクリプトはCC0です。
	使用する場合は自己責任で使用してください。
*/
document.querySelector("#navigation > div > ul > li.link.explore > ul").insertAdjacentHTML("beforeend","<li><a href='https://ja.scratch-wiki.info/wiki/メインページ'><span>ホームへ戻る</span></a></li>");
document.querySelector("#navigation > div > ul > li.link.create > ul").insertAdjacentHTML("beforeend","<li><a href='https://ja.scratch-wiki.info/wiki/Japanese_Scratch-Wiki:作成すべき100の記事'><span>作成すべき100の記事</span></a></li><li><a href='https://ja.scratch-wiki.info/wiki/カテゴリ:3.0アップデートによる大規模変更予定ページ'><span>3.0アップデートによる大規模変更予定ページ</span></a></li><li><a href='https://ja.scratch-wiki.info/wiki/カテゴリ:スタブ'><span>スタブ</span></a></li>");
["tips","discuss","about"].forEach(function(i){
	document.getElementsByClassName(i)[0].style.display = "none";
});
if(mw.config.get("wgAction") === "edit"){
	["feet","footer"].forEach(function(i){
		document.getElementById(i).style.display = "none";
	});
	document.querySelector("#view .left").style.display = "none";
	document.querySelector("#view .right").style.margin = "0px";
	document.querySelector("#view .right").style.width = "100%";
	document.querySelector("#view > div > div").style.width = "80%";
	document.getElementById("wikiPreview").style.width = "800px";
	document.getElementById("wpSummary").addEventListener("focus",function(){
		this.select();
	});
	if(!document.getElementById("wpSummary").value)document.getElementById("wpSummary").value = "/*  */";
}
Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。