User:Alex Smotrov/edittools.js
From MediaWiki.org
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Konqueror: Click Reload or press F5
- Opera: Clear the cache in Tools → Preferences
//<nowiki> var charinsert = { 'Standard': '[+] [[+]] [[+|+]] {{+}} – — “+” ‘+’ «+» ‹+› „+“ ‚+‘ … ~ | ° ≈ ≠ ≤ ≥ ± − × ÷ ← → ² ³ ½ · § \n [[Category:+]] [[:Image:+]] +<includeonly> +<noinclude> #REDIRECT[[+]] {{DEFAULTSORT:+}}', 'Latin': 'ÁáĆćÉéÍíÓóŚśÚúÝýǾǿ ÀàÈèÌìÒòÙù ÂâĈĉÊêĜĝĤĥÎîĴĵÔôŝŜÛû ÄäËëÏïÖöÜüÿ ÃãÑñÕõ Å å Ç ç Č芚ŭ Ł ł ŐőŰű Ø ø ĀāĒēĪīŌōŪū ß ÆæŒœ ÐðÞþ|', 'Greek': 'ΑΆΒΓΔΕΈΖΗΉΘΙΊΚΛΜΝΞΟΌΠΡΣΤΥΎΦΧΨΩΏ αάβγδεέζηήθιίκλμνξοόπρσςτυύφχψωώ', 'IPA': 'ʈɖɟɡɢʡʔ ɸʃʒɕʑʂʐʝɣʁʕʜʢɦ ɱɳɲŋɴ ʋɹɻɰ ʙʀɾɽ ɫɬɮɺɭʎʟ ɥʍɧ ɓɗʄɠʛ ʘǀǃǂǁ ɨʉɯ ɪʏʊ ɘɵɤ ɚ ɛɜɝɞʌɔ ɐɶɑɒ ʰʷʲˠˤⁿˡ ˈˌːˑ', 'Arabic': 'ابتثجحخدذرزسشصضطظعغفقكلمنهوي ﺍﺑﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻃﻇﻋﻏﻓﻗﻛﻟﻣﻧﻫﻭﻳ\ ﺍﺒﺘﺜﺠﺤﺨﺪﺬﺮﺰﺴﺸﺼﻀﻄﻈﻌﻐﻔﻘﻜﻠﻤﻨﻬﻮﻴ ﺎﺐﺖﺚﺞﺢﺦﺪﺬﺮﺰﺲﺶﺺﺾﻂﻆﻊﻎﻒﻖﻚﻞﻢﻦﻪﻮﻲ\ ء- ّ- ْ- ً- ِ- آأإةؤئى پچژگﭪڠ۰۱۲۳٤٥٦٧۸۹', 'Cyrillic': 'АБВГДЂЕЁЖЗЅИЙЈКЛЉМНЊОПРСТЋУФХЦЧЏШЩЪЫЬЭЮЯ абвгдђеёжзѕийјклљмнњопрстћуфхцчџшщъыьэюя', 'Catalan': 'ÁáÀàÇçÉéÈèËëÍíÏïÓóÒòÖöÚúÙù', 'Czech': 'ÁáČčĎďÉéĚěÍíŇňÓóŘřŠšŤťÚúŮůÝýŽž', 'Devanagari': 'ँ ं ः अ आ इ ई उ ऊ ऋ ऌ ऍ ऎ ए ऐ ऑ ऒ ओ औ क क़ ख ख़ ग ग़ घ ङ च छ ज ज़ झ ञ ट ठ ड ड़ द ढ ढ़ ण त थ ध न ऩ प फ फ़ ब भ म य य़ र ऱ ल ळ ऴ व श ष स ह ़ ऽ ा ि ॊ ो ौ ् ी ु ू ृ ॄ ॅ ॆ े ै ॉ ॐ ॑ ॒ ॓ ॔ ॠ ॡ ॢ ॣ । ॥ ॰', 'Esperanto': 'ĈĉĜĝĤĥĴĵŜŝŬŭ', 'Estonian': 'ČčŠšŽžÕõÄäÖöÜü', 'French': 'ÀàÂâÇçÉéÈèÊêËëÎîÏïÔôŒœÙùÛûÜüŸÿ', 'German': 'ÄäÖöÜüß', 'Hawaiian': 'ĀāĒēĪīŌōŪūʻ', 'Hebrew': 'אבגדהוזחטיכךלמםנןסעפףצץקרשת־״׳', 'Hungarian': 'ŐőŰű', 'Icelandic': 'ÁáÐðÉéÍíÓóÚúÝýÞþÆæÖö', 'Italian': 'ÁáÀàÉéÈèÍíÌìÓóÒòÚúÙù', 'Latvian': 'ĀāČčĒēĢģĪīĶķĻļŅņŠšŪūŽž', 'Lithuanian': 'ĄąČčĘęĖėĮįŠšŲųŪūŽž', 'Maltese': 'ĊċĠġĦħŻż', 'Old English': 'Ā⯿ǢǣǼǽĊċÐðĒēĠġĪīŌōŪūǷƿȲȳÞþȜȝ', 'Pinyin': 'ÁáÀàǍǎĀāÉéÈèĚěĒēÍíÌìǏǐĪīÓóÒòǑǒŌōÚúÙùÜüǓǔŪūǗǘǛǜǙǚǕǖ', 'Polish': 'ąĄćĆęĘłŁńŃóÓśŚźŹżŻ', 'Portuguese': 'ÁáÀàÂâÃãÇçÉéÊêÍíÓóÔôÕõÚúÜü', 'Romaji': 'ĀāĒēĪīŌōŪū', 'Romanian': 'ĂăÂâÎŢţ', 'Scandinavian': 'ÀàÉéÅ寿Ä䨸Öö', 'Serbian': 'АаБбВвГгДдЂђЕеЖжЗзИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЋћУуФфХхЦцЧчЏџШш', 'Spanish': 'ÁáÉéÍíÑñÓóÚúÜü¡¿', 'Turkish': 'ÇçĞğİıÖöŞşÜüÂâÎîÛû', 'Vietnamese': 'ÀàẢảÁáẠạÃãĂăẰằẲẳẴẵẮắẶặÂâẦầẨẩẪẫẤấẬậĐđÈèẺẻẼẽÉéẸẹÊêỀềỂểỄễẾếỆệỈỉĨĩÍíỊịÌìỎỏÓóỌọÒòÕõÔôỒồỔổỖỗỐốỘộƠơỜờỞởỠỡỚớỢợÙùỦủŨũÚúỤụƯưỪừỬửỮữỨứỰựỲỳỶỷỸỹỴỵÝý', 'Welsh': 'ÁáÀàÂâÄäÉéÈèÊêËëÌìÎîÏïÓóÒòÔôÖöÙùÛûẀẁŴŵẄẅÝýỲỳŶŷŸÿ', 'Yiddish': 'א אַ אָ ב בֿ ג ד ה ו וּ װ ױ ז זש ח ט י יִ ײ ײַ כ ך כּ ל ל מ ם נ ן ס ע ע פ פּ פֿ ף צ ץ ק ר ש שׂ תּ ת ׳ ״ ־' } var charinsertDivider = '·' appendCSS('\ .mw-editTools {text-align:center;\ border:1px solid #aaa;\ font-size:120%;\ padding:1px;\ margin-top:10px;\ }\ .mw-editTools a {\ color: black !important;\ background-color: #ccddee;\ font-weight: bold;\ font-size: 0.9em;\ text-decoration: none !important;\ border: 1px #006699 outset;\ padding: 0 0.1em 0.1em 0.1em;\ }\ .mw-editTools a:hover {\ background-color: #bbccdd;\ border: 1px #F0F0F0 inset;\ }') createEditTools() function createEditTools(){ //find div#mw-editTools var box = document.getElementById('wpTextbox1') while ((box=box.nextSibling) && box.className!='mw-editTools'); if (!box) return box.title = 'Click on the character or tag to insert it into edit window' //append user-defined sets if (window.charinsertCustom) for (id in charinsertCustom) if (charinsert[id]) charinsert[id] += ' ' + charinsertCustom[id] else charinsert[id] = charinsertCustom[id] //create drop-down select var prevSubset = 0, curSubset = 0 var sel = document.createElement('select'), id for (id in charinsert) sel.options[sel.options.length] = new Option(id, id) sel.style.cssFloat = sel.style.styleFloat = 'left' sel.style.marginRight = '5px' sel.title = 'Choose character subset' sel.onchange = sel.onkeyup = selectSubset box.appendChild(sel) //create "recall" switch if (window.editToolsRecall){ var recall = document.createElement('span') recall.appendChild(document.createTextNode('↕')) //↔ recall.onclick = function(){ sel.selectedIndex = prevSubset; selectSubset() } with (recall.style) { cssFloat = styleFloat = 'left'; marginRight = '5px'; cursor = 'pointer' } box.appendChild(recall) } //show standard set selectSubset() return function selectSubset(){ //remember previous (for "recall" button) prevSubset = curSubset curSubset = sel.selectedIndex //hide other subsets var pp = box.getElementsByTagName('p') for (var i=0; i<pp.length; i++) pp[i].style.display = 'none' //show/create current subset var id = sel.options[curSubset].value var p = document.getElementById(id) if (!p){ p = document.createElement('p') p.id = id if (id == 'Arabic'){ p.style.fontSize = '120%'; p.dir = 'rtl'} createTokens(p, charinsert[id]) box.appendChild(p) } p.style.display = 'inline' } }//createEditTools function createTokens(paragraph, str){ var tokens = str.split(' '), token, i, n for (i in tokens) { token = tokens[i] n = token.indexOf('+') if (token == '' || token == '_') addText(charinsertDivider + ' ') else if (token == '\n') paragraph.appendChild(document.createElement('br')) else if (token == '___') paragraph.appendChild(document.createElement('hr')) else if (token.charAt(token.length-1) == ':') // : at the end means just text addBold(token) else if (n == 0) // +<tag> -> <tag>+</tag> addLink(token.substring(1), '</' + token.substring(2), token.substring(1)) else if (n > 0) // <tag>+</tag> addLink(token.substring(0,n), token.substring(n+1)) else if (token.length > 2 && token.charCodeAt(0) > 127) //a string of insertable characters for (var i=0; i < token.length; i++) addLink(token.charAt(i), '') else addLink(token, '') } function addLink(tagOpen, tagClose, name){ var a = document.createElement('a') tagOpen = tagOpen.replace(/\./g,' ') tagClose = tagClose ? tagClose.replace(/_/g,' ') : '' name = name || tagOpen + tagClose name = name.replace(/\\n/g,'') a.appendChild(document.createTextNode(name)) a.href = "javascript:insertTags('" + tagOpen + "','" + tagClose + "','')" paragraph.appendChild(a) addText(' ') } function addBold(text){ var b = document.createElement('b') b.appendChild(document.createTextNode(text.replace(/_/g,' '))) paragraph.appendChild(b) addText(' ') } function addText(txt){ paragraph.appendChild(document.createTextNode(txt)) } }//createTokens function appendCSS(text){ var s = document.createElement('style') s.setAttribute('type', 'text/css') if (s.styleSheet) s.styleSheet.cssText = text //IE else s.appendChild(document.createTextNode(text)) document.getElementsByTagName('head')[0].appendChild(s) return s } //</nowiki>