User:Francoxamorreu/MediaWiki:Gadget-charinsert-core.js: Difference between revisions
Boobpedia - Encyclopedia of big boobs
Jump to navigationJump to search
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
/ | //<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> | |||
Revision as of 17:11, 9 April 2023
//<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>