Quick Paste Bookmarklet
if(!window.pasteMod) { window.pasteMod = { now: "off", q: function(v) { return document.querySelector(v); }, paste: function(v1,v2) { var t = this.q("#edit-page-textarea"); var all = t.value; var start = t.selectionStart; var end = t.selectionEnd; if(v2 == undefined) { t.value = all.substr(0, start) + v1 + all.substr(start, all.length); } else if(start == end) { t.value = all.substr(0, start) + v1 + "<text>" + v2 + all.substr(start, all.length); }else { t.value = all.substr(0, end) + v2 + all.substr(end, all.length); all = t.value; t.value = all.substr(0, start) + v1 + all.substr(start, all.length); } }, bousen: function() { this.paste('[[span class="bousen"]]', '[[/span]]'); }, namisen: function() { this.paste('[[span class="namisen"]]', '[[/span]]'); }, kenten_now: "kenten-b", kenten_init: function(v) { this.kenten_now = v; }, kenten: function() { this.paste('[[span class="' + this.kenten_now + '"]]', '[[/span]]'); }, col: function() { this.paste('[[collapsible show="+ open" hide="- close"]]\n', '\n[[/collapsible]]'); }, mCol: function() { this.paste('[[include :scp-int:component:coltop show=+ open|hide=- close]]\n', '\n[[include :scp-int:component:colend]]'); }, ruby: function() { this.paste('[[span class="ruby"]]', '[[span class="rt"]]<ruby>[[/span]][[/span]]'); }, foot: function() { this.paste('[[footnote]]', '[[/footnote]]'); }, color: function() { this.paste('###b01|', '##'); }, size: function() { this.paste('[[size 120%]]', '[[/size]]'); }, bb: function() { this.paste('█'); }, pict: function() { this.paste('[[include component:image-block\n|name=<file name>\n|caption=', '\n]]'); }, rep: function() { var t = this.q("#edit-page-textarea"); t.value = t.value.split(this.q("#repBef").value).join(this.q("#repAft").value); }, init: function() { try { var meta = this.q('[name="viewport"]'); meta.setAttribute("content", meta.getAttribute("content") + ", user-scalable=no"); } catch(e) {} if(!this.q("#edit-page-textarea")) { if(!window.WIKIDOT) { return alert("Detection failed: WIKIDOT object is undefined"); }else { try { WIKIDOT.page.listeners.editClick(); var target = this.q("#action-area"); var observer = new MutationObserver(records=>{ observer.disconnect(); return this.init(); }); var options = {childList: true}; observer.observe(target, options); }catch(e){} } }else { var newWikiButtons = ` <div class="repEdit"> <input type="text" id="repBef" placeholder="XXXX"> <button onclick="pasteMod.rep()">→</button> <input type="text" id="repAft" placeholder="9999"> </div> <button onclick="pasteMod.col()"><span>collapsible</span></button> <button onclick="pasteMod.mCol()"><span>col mod</span></button> <button onclick="WIKIDOT.Editor.buttons.tableWizard()"><span>table</span></button> <button onclick="pasteMod.foot()"><span>footnote</span></button> <button onclick="pasteMod.ruby()"><span>ruby</span></button> <button onclick="pasteMod.size()"><span>size</span></button> <button onclick="pasteMod.color()"><span>color</span></button> <button onclick="WIKIDOT.Editor.buttons.quote()"><span>block quote</span></button> <button onclick="pasteMod.bb()"><span>blackbox (█)</span></button> <button onclick="pasteMod.pict()" class="pmod_mid"><span>image (caption)</span></button> <button onclick="pasteMod.jFire()" data-j="off" class="pmod_mid">JStyles: <span>OFF</span></button>`; var wikiOptionStyle = ` #action-area h1 { border: 2px solid #b01; border-radius: 0.25em; display: flex; flex-wrap: wrap; justify-content: space-around; padding: 0.25em; } #action-area h1 .pmodBtn, #action-area h1 button { display: block; flex-grow: 1; margin: 0; padding: 0.25em; width: 26%; -moz-appearance: none; -webkit-appearance: none; } #action-area h1 .repEdit { background-color: #F4F4F4; border: 1px solid #AAA; display: flex; flex-grow: 1; justify-content: space-around; margin: 0.25em 0; padding: 0.25em; width: 90%; } #action-area h1 .repEdit input { border: 1px solid #AAA; color: #b01; flex-grow: 1; font-family: sans-serif; font-size: 0.925rem; width: 40%; -moz-appearance: none; -webkit-appearance: none; } #action-area h1 .repEdit button { flex-grow: unset; width: 2rem; } #action-area h1 .pmod_mid { width: 40%; } #action-area h1 .pmod_wide { width: 40%; } #action-area h1 button[data-j] { background: #fff0f0; } #action-area h1 button[data-j] span { display: inline-block; text-shadow: 0 0 2px; transition: all 0.25s ease-in-out; width: 2.5em; } #action-area h1 button[data-j="on"] span { color: green; } #action-area h1 button[data-j="off"] span { color: red; } #action-area h1 .act:after { color: green; content: " (J)"; text-shadow: 0 0 2px; } #action-area h1 .pmodBtn { background-color: #F4F4F4; border: 1px solid #AAA; color: #000; flex-grow: unset; margin: 0; padding: 0.25em; text-decoration: none; width: 2rem; } #action-area h1 .pmodBtn:not(:focus) { background-image: url("https://ja.m.wikipedia.org/w/load.php?modules=mobile.ooui.icons&image=expand&format=rasterized&skin=minerva&version=iffcu"); background-position: center; background-repeat: no-repeat; background-size: 50%; font-size: 0; } #wd-editor-toolbar-panel { display: none; }`; var wikiOption = this.q("#action-area h1"); wikiOption.innerHTML = newWikiButtons; var newStyle = document.createElement("style"); newStyle.innerHTML = wikiOptionStyle; document.head.appendChild(newStyle); } }, jFire: function() { var t = this.q("#edit-page-textarea"); var e = this.q("#action-area button[data-j]"); this.now = e.getAttribute("data-j"); var rmv = (v) => {for(var i = 0; i < v.length; i++) v[i].remove();}; t.value = t.value.split(/(?:\n|^)\[\[include (?:\:.*?:|)component\:jstyles\]\]\n?/g).join(""); if(this.now == "off") { t.value = '[[include :scp-jp:component:jstyles]]\n' + t.value; e.setAttribute("data-j", "on"); this.q("#action-area button[data-j] span").innerHTML = "ON"; this.q("#action-area h1").innerHTML += ` <button onclick="pasteMod.namisen()" class="rmv act"><span>波線</span></button> <button onclick="pasteMod.bousen()" class="rmv act"><span>傍線</span></button> <button onclick="pasteMod.kenten()" class="rmv act" style="width: calc(26% - 2rem)"><span>圏点</span></button> <select onchange="pasteMod.kenten_init(this.value)" class="rmv pmodBtn"> <option value="kenten-b" selected>小丸 (黒)</option> <option value="kenten-wb">小丸 (白)</option> <option value="kenten-c">丸 (黒)</option> <option value="kenten-wc">丸 (白)</option> <option value="kenten-goma">ゴマ (黒)</option> <option value="kenten-wgoma">ゴマ (白)</option> <option value="kenten-t">三角 (黒)</option> <option value="kenten-wt">三角 (白)</option> <option value="kenten-janome">蛇の目</option> <option value="kenten-doublec">二重丸</option> <option value="kenten-hoshi">星</option> <option value="kenten-kane">¥</option> </select> `; } else { e.setAttribute("data-j", "off"); this.q("#action-area button[data-j] span").innerHTML = "OFF"; rmv(document.querySelectorAll("#action-area h1 .rmv")); } } } }; pasteMod.init();
page revision: 75, last edited: 01 Nov 2019 06:52






