MediaWiki:Gadget-charinsert.js: Difference between revisions

add Apple symbol ⌘ and typewriter formatted text <tt>+</tt>
(We don't have cite)
(add Apple symbol ⌘ and typewriter formatted text <tt>+</tt>)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
// copied from [[mw:User:Alex Smotrov/edittools.js]], modified for use on the English Wikipedia.
/**
// enableForAllFields() feature from [[commons:MediaWiki:Edittools.js]]
* Copied from [[mw:User:Alex Smotrov/edittools.js]], modified for use on the [[English Wikipedia]].
// combined and modified by [[User:Ilmari Karonen]]
* enableForAllFields() feature from [[commons:MediaWiki:Edittools.js]]
 
* combined and modified by [[User:Ilmari Karonen]]
// Configuration (to be set from [[Special:MyPage/common.js]]):
*
//   window.charinsertCustom – Object. Merged into the default charinsert list. For example, setting
* Configuration (to be set from [[Special:MyPage/common.js]]):
//       this to { Symbols: '‽' } will add the interrobang to the end of the Symbols section.
*   window.charinsertCustom – Object. Merged into the default charinsert list. For example, setting
//   window.editToolsRecall – Boolean. Set true to create a recall switch.
*       this to { Symbols: '‽' } will add the interrobang to the end of the Symbols section.
//   window.charinsertDontMove – Boolean. Set true to leave the box in its default position, rather
*   window.editToolsRecall – Boolean. Set true to create a recall switch.
//       than moving it above the edit summary.
*   window.charinsertDontMove – Boolean. Set true to leave the box in its default position, rather
//   window.updateEditTools() – Function. Call after updating window.charinsertCustom to regenerate the
*       than moving it above the edit summary.
//       EditTools window.
*   window.updateEditTools() – Function. Call after updating window.charinsertCustom to regenerate the
 
*       EditTools window.
*/
/* global jQuery, mw, charinsertCustom */


window.updateEditTools = function () {
window.updateEditTools = function () {
Line 22: Line 24:
         charinsert: {
         charinsert: {
             'Insert': ' – — ° ″ ′ ≈ ≠ ≤ ≥ ± − × ÷ ← → · §  ␥Sign_your_posts_on_talk_pages: ␥~~\~~',
             'Insert': ' – — ° ″ ′ ≈ ≠ ≤ ≥ ± − × ÷ ← → · §  ␥Sign_your_posts_on_talk_pages: ␥~~\~~',
             'Wiki markup': 'Insert:  – — ° ″ ′ ≈ ≠ ≤ ≥ ± − × ÷ ← → · § ␥~~\~~  Wiki_markup:  {\{+}}  {\{\{+}}}  |  [+]  [\[+]]  [\[Category:+]]  #REDIRECT.[\[+]]  &nb'+'sp;  <s>+</s>  <sup>+</sup>  <sub>+</sub>  <code>+</code>  <pre>+</pre>  <blockquote>+</blockquote> {\{#tag:ref|+|group="nb"|name=""}}  {\{Reflist}} <includeonly>+</includeonly>  <noinclude>+</noinclude>  {\{DEFAULTSORT:+}}  <nowiki>+</nowiki>  <!--.+_-->  <span.class="plainlinks">+</span>',
             'Wiki markup': 'Insert:  – — ° ″ ′ ≈ ≠ ≤ ≥ ± − × ÷ ← → · § ␥~~\~~  Wiki_markup:  {\{+}}  {\{\{+}}}  |  [+]  [\[+]]  [\[Category:+]] {\{tag|+}} #REDIRECT.[\[+]]  &nb'+'sp;  <s>+</s>  <sup>+</sup>  <sub>+</sub>  <tt>+</tt>  <code>+</code>  <pre>+</pre>  <blockquote>+</blockquote>  <includeonly>+</includeonly>  <noinclude>+</noinclude>  {\{DEFAULTSORT:+}}  {\{DISPLAYTITLE:+}}  <nowiki>+</nowiki>  <!--.+_-->  <span.class=plainlinks>+</span>',
             'Symbols': '~ | ¡¿†‡↔↑↓•¶#∞  ‘+’ “+” ‹+› «+» ⟨+⟩  ¤₳฿₵¢₡₢$₫₯€₠₣ƒ₴₭₤ℳ₥₦№₧₰£៛₨₪৳₮₩¥  ♠♣♥♦  ♭♯♮  ©®™ {\{Unicode|+}}',
             'Symbols': '~ | ¡¿†‡↕↑↓→←•¶#∞  ‘+’ “+” ‹+› «+» ⟨+⟩  ¤₳฿₵¢₡₢$₫₯€₠₣ƒ₴₭₤ℳ₥₦№₧₰£៛₨₪৳₮₩¥  ♠♣♥♦  ♭♯♮  ℗©®™ ⌘ –—…~ |°§',
             'Latin': 'A a Á á À à  â Ä ä Ǎ ǎ Ă ă Ā ā à ã Å å Ą ą Æ æ Ǣ ǣ  B b  C c Ć ć Ċ ċ Ĉ ĉ Č č Ç ç  D d Ď ď Đ đ Ḍ ḍ Ð ð  E e É é È è Ė ė Ê ê Ë ë Ě ě Ĕ ĕ Ē ē Ẽ ẽ Ę ę Ẹ ẹ Ɛ ɛ Ə ə  F f  G g Ġ ġ Ĝ ĝ Ğ ğ Ģ ģ  H h Ĥ ĥ Ħ ħ Ḥ ḥ  I i İ ı Í í Ì ì Î î Ï ï Ǐ ǐ Ĭ ĭ Ī ī Ĩ ĩ Į į Ị ị  J j Ĵ ĵ  K k Ķ ķ  L l Ĺ ĺ Ŀ ŀ Ľ ľ Ļ ļ Ł ł Ḷ ḷ Ḹ ḹ  M m Ṃ ṃ  N n Ń ń Ň ň Ñ ñ Ņ ņ Ṇ ṇ Ŋ ŋ  O o Ó ó Ò ò Ô ô Ö ö Ǒ ǒ Ŏ ŏ Ō ō Õ õ Ǫ ǫ Ọ ọ Ő ő Ø ø Œ œ  Ɔ ɔ  P p  Q q  R r Ŕ ŕ Ř ř Ŗ ŗ Ṛ ṛ Ṝ ṝ  S s Ś ś Ŝ ŝ Š š Ş ş Ș ș Ṣ ṣ ß  T t Ť ť Ţ ţ Ț ț Ṭ ṭ Þ þ  U u Ú ú Ù ù Û û Ü ü Ǔ ǔ Ŭ ŭ Ū ū Ũ ũ Ů ů Ų ų Ụ ụ Ű ű Ǘ ǘ Ǜ ǜ Ǚ ǚ Ǖ ǖ  V v  W w Ŵ ŵ  X x  Y y Ý ý Ŷ ŷ Ÿ ÿ Ỹ ỹ Ȳ ȳ  Z z Ź ź Ż ż Ž ž  ß Ð ð Þ þ Ŋ ŋ Ə ə {\{Unicode|+}}',
             'Latin': 'A a Á á À à  â Ä ä Ǎ ǎ Ă ă Ā ā à ã Å å Ą ą Æ æ Ǣ ǣ  B b  C c Ć ć Ċ ċ Ĉ ĉ Č č Ç ç  D d Ď ď Đ đ Ḍ ḍ Ð ð  E e É é È è Ė ė Ê ê Ë ë Ě ě Ĕ ĕ Ē ē Ẽ ẽ Ę ę Ẹ ẹ Ɛ ɛ Ə ə  F f  G g Ġ ġ Ĝ ĝ Ğ ğ Ģ ģ  H h Ĥ ĥ Ħ ħ Ḥ ḥ  I i İ ı Í í Ì ì Î î Ï ï Ǐ ǐ Ĭ ĭ Ī ī Ĩ ĩ Į į Ị ị  J j Ĵ ĵ  K k Ķ ķ  L l Ĺ ĺ Ŀ ŀ Ľ ľ Ļ ļ Ł ł Ḷ ḷ Ḹ ḹ  M m Ṃ ṃ  N n Ń ń Ň ň Ñ ñ Ņ ņ Ṇ ṇ Ŋ ŋ  O o Ó ó Ò ò Ô ô Ö ö Ǒ ǒ Ŏ ŏ Ō ō Õ õ Ǫ ǫ Ọ ọ Ő ő Ø ø Œ œ  Ɔ ɔ  P p  Q q  R r Ŕ ŕ Ř ř Ŗ ŗ Ṛ ṛ Ṝ ṝ  S s Ś ś Ŝ ŝ Š š Ş ş Ș ș Ṣ ṣ ß  T t Ť ť Ţ ţ Ț ț Ṭ ṭ Þ þ  U u Ú ú Ù ù Û û Ü ü Ǔ ǔ Ŭ ŭ Ū ū Ũ ũ Ů ů Ų ų Ụ ụ Ű ű Ǘ ǘ Ǜ ǜ Ǚ ǚ Ǖ ǖ  V v  W w Ŵ ŵ  X x  Y y Ý ý Ŷ ŷ Ÿ ÿ Ỹ ỹ Ȳ ȳ  Z z Ź ź Ż ż Ž ž  ß Ð ð Þ þ Ŋ ŋ Ə ə',
             'Greek': 'ΆάΈέΉήΊίΌόΎύΏώ  ΑαΒβΓγΔδ  ΕεΖζΗηΘθ  ΙιΚκΛλΜμ  ΝνΞξΟοΠπ  ΡρΣσςΤτΥυ  ΦφΧχΨψΩω  ᾼᾳᾴᾺὰᾲᾶᾷἈἀᾈᾀἉἁᾉᾁἌἄᾌᾄἊἂᾊᾂἎἆᾎᾆἍἅᾍᾅἋἃᾋᾃἏἇᾏᾇ  ῈὲἘἐἙἑἜἔἚἒἝἕἛἓ  ῌῃῄῊὴῂῆῇἨἠᾘᾐἩἡᾙᾑἬἤᾜᾔἪἢᾚᾒἮἦᾞᾖἭἥᾝᾕἫἣᾛᾓἯἧᾟᾗ  ῚὶῖἸἰἹἱἼἴἺἲἾἶἽἵἻἳἿἷ  ῸὸὈὀὉὁὌὄὊὂὍὅὋὃ  ῤῬῥ  ῪὺῦὐὙὑὔὒὖὝὕὛὓὟὗ  ῼῳῴῺὼῲῶῷὨὠᾨᾠὩὡᾩᾡὬὤᾬᾤὪὢᾪᾢὮὦᾮᾦὭὥᾭᾥὫὣᾫᾣὯὧᾯᾧ   {\{Polytonic|+}}',
             'Greek': 'ΆάΈέΉήΊίΌόΎύΏώ  ΑαΒβΓγΔδ  ΕεΖζΗηΘθ  ΙιΚκΛλΜμ  ΝνΞξΟοΠπ  ΡρΣσςΤτΥυ  ΦφΧχΨψΩω  ᾼᾳᾴᾺὰᾲᾶᾷἈἀᾈᾀἉἁᾉᾁἌἄᾌᾄἊἂᾊᾂἎἆᾎᾆἍἅᾍᾅἋἃᾋᾃἏἇᾏᾇ  ῈὲἘἐἙἑἜἔἚἒἝἕἛἓ  ῌῃῄῊὴῂῆῇἨἠᾘᾐἩἡᾙᾑἬἤᾜᾔἪἢᾚᾒἮἦᾞᾖἭἥᾝᾕἫἣᾛᾓἯἧᾟᾗ  ῚὶῖἸἰἹἱἼἴἺἲἾἶἽἵἻἳἿἷ  ῸὸὈὀὉὁὌὄὊὂὍὅὋὃ  ῤῬῥ  ῪὺῦὐὙὑὔὒὖὝὕὛὓὟὗ  ῼῳῴῺὼῲῶῷὨὠᾨᾠὩὡᾩᾡὬὤᾬᾤὪὢᾪᾢὮὦᾮᾦὭὥᾭᾥὫὣᾫᾣὯὧᾯᾧ',
             'Cyrillic': 'АаБбВвГг  ҐґЃѓДдЂђ  ЕеЁёЄєЖж  ЗзЅѕИиІі  ЇїЙйЈјКк  ЌќЛлЉљМм  НнЊњОоПп  РрСсТтЋћ  УуЎўФфХх  ЦцЧчЏџШш  ЩщЪъЫыЬь  ЭэЮюЯя ӘәӨөҒғҖҗ ҚқҜҝҢңҮү ҰұҲҳҸҹҺһ  ҔҕӢӣӮӯҘҙ  ҠҡҤҥҪҫӐӑ  ӒӓӔӕӖӗӰӱ  ӲӳӸӹӀ  ҞҟҦҧҨҩҬҭ  ҴҵҶҷҼҽҾҿ  ӁӂӃӄӇӈӋӌ  ӚӛӜӝӞӟӠӡ  ӤӥӦӧӪӫӴӵ  ́',
             'Cyrillic': 'АаБбВвГг  ҐґЃѓДдЂђ  ЕеЁёЄєЖж  ЗзЅѕИиІі  ЇїЙйЈјКк  ЌќЛлЉљМм  НнЊњОоПп  РрСсТтЋћ  УуЎўФфХх  ЦцЧчЏџШш  ЩщЪъЫыЬь  ЭэЮюЯя ӘәӨөҒғҖҗ ҚқҜҝҢңҮү ҰұҲҳҸҹҺһ  ҔҕӢӣӮӯҘҙ  ҠҡҤҥҪҫӐӑ  ӒӓӔӕӖӗӰӱ  ӲӳӸӹӀ  ҞҟҦҧҨҩҬҭ  ҴҵҶҷҼҽҾҿ  ӁӂӃӄӇӈӋӌ  ӚӛӜӝӞӟӠӡ  ӤӥӦӧӪӫӴӵ  ́',
             'Hebrew': 'אבגדהוזחטיךכלםמןנסעףפץצקרשת  ׳ ״  װױײ',
             'Hebrew': 'אבגדהוזחטיךכלםמןנסעףפץצקרשת  ׳ ״  װױײ',
             'Arabic': '  Transcription: ʾ ṯ ḥ ḫ ẖ ḏ š ṣ ḍ ṭ ẓ ʿ ġ ẗ ا ﺁ ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه ة و ي ى ء أ إ ؤ ئ',
             'Arabic': '  Transcription: ʾ ṯ ḥ ḫ ẖ ḏ š ṣ ḍ ṭ ẓ ʿ ġ ẗ ا ﺁ ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه ة و ي ى ء أ إ ؤ ئ',
             'IPA (English)': 'ˈ ˌ ŋ ɡ tʃ dʒ ʃ ʒ θ ð ʔ  iː ɪ uː ʊ ʌ ɜr eɪ ɛ æ oʊ ɒ ɔː ɔɪ ɔr ɑː ɑr aɪ aʊ  ə ər ɨ ɵ ʉ ⟨+⟩ {\{IPAc-en|+}} {\{IPA-en|+}} {\{IPA|/+/}}',
             'IPA (English)': 'ˈ ˌ ŋ ɡ tʃ dʒ ʃ ʒ θ ð ʔ  iː ɪ uː ʊ ʌ ɜr eɪ ɛ æ oʊ ɒ ɔː ɔɪ ɔr ɑː ɑr aɪ aʊ  ə ər ɨ ɵ ʉ ⟨+⟩',
             'IPA': 't̪ d̪ ʈɖɟɡɢʡʔ  ɸβθðʃʒɕʑʂʐçʝɣχʁħʕʜʢɦ  ɱɳɲŋɴ  ʋɹɻɰ  ʙⱱʀɾɽ  ɫɬɮɺɭʎʟ  ʍɥɧ  ʼ ɓɗʄɠʛ  ʘǀǃǂǁ  ɨʉɯ ɪʏʊ øɘɵɤ ə ɚ ɛœɜɝɞʌɔ æ ɐɶɑɒ  ʰʱʷʲˠˤˀ ᵊ k̚ ⁿˡ  ˈˌːˑ t̪ d̪ s̺ s̻ θ̼ s̬ n̥ ŋ̊ a̤ a̰  β̞ ˕ r̝ ˔ o˞ ɚ ɝ e̘ e̙ u̟ i̠ ɪ̈ e̽ ɔ̹ ɔ̜ n̩ ə̆ ə̯ ə̃ ȷ̃ ɫ z̴ ə̋ ə́ ə̄ ə̀ ə̏ ə̌ ə̂ ə᷄ ə᷅ ə᷇ ə᷆ ə᷈ ə᷉ t͡ʃ d͡ʒ t͜ɬ ‿  ˥ ˦ ˧ ˨ ˩ ꜛ ꜜ | ‖ ↗ ↘  k͈ s͎ {\{IPA|+}}',
             'IPA': 't̪ d̪ ʈɖɟɡɢʡʔ  ɸβθðʃʒɕʑʂʐçʝɣχʁħʕʜʢɦ  ɱɳɲŋɴ  ʋɹɻɰ  ʙⱱʀɾɽ  ɫɬɮɺɭʎʟ  ʍɥɧ  ʼ ɓɗʄɠʛ  ʘǀǃǂǁ  ɨʉɯ ɪʏʊ øɘɵɤ ə ɚ ɛœɜɝɞʌɔ æ ɐɶɑɒ  ʰʱʷʲˠˤˀ ᵊ k̚ ⁿˡ  ˈˌːˑ t̪ d̪ s̺ s̻ θ̼ s̬ n̥ ŋ̊ a̤ a̰  β̞ ˕ r̝ ˔ o˞ ɚ ɝ e̘ e̙ u̟ i̠ ɪ̈ e̽ ɔ̹ ɔ̜ n̩ ə̆ ə̯ ə̃ ȷ̃ ɫ z̴ ə̋ ə́ ə̄ ə̀ ə̏ ə̌ ə̂ ə᷄ ə᷅ ə᷇ ə᷆ ə᷈ ə᷉ t͡ʃ d͡ʒ t͜ɬ ‿  ˥ ˦ ˧ ˨ ˩ ꜛ ꜜ | ‖ ↗ ↘  k͈ s͎',
             'Math and logic': '− × ÷ ⋅ ° ∗ ∘ ± ∓ ≤ ≥ ≠ ≡ ≅ ≜ ≝ ≐ ≃ ≈ ⊕ ⊗ ⇐ ⇔ ⇒ ∞ ← ↔ → ≪ ≫ ∝ √ ∤ ≀ ◅ ▻ ⋉ ⋊ ⋈ ∴ ∵ ↦ ¬ ∧ ∨ ⊻ ∀ ∃ ∈ ∉ ∋ ⊆ ⊈ ⊊ ⊂ ⊄ ⊇ ⊉ ⊋ ⊃ ⊅ ∪ ∩ ∑ ∏ ∐ ′ ∫ ∬ ∭ ∮ ∇ ∂ ∆ ∅ ℂ ℍ ℕ ℙ ℚ ℝ ℤ ℵ ⌊ ⌋ ⌈ ⌉ ⊤ ⊥ ⊢ ⊣ ⊧ □ ∠ ⟨ ⟩ {\{frac|+|}} &nb'+'sp; &minus; <math>+</math> {\{math|+}}'
             'Math and logic': '− × ÷ ⋅ ° ∗ ∘ ± ∓ ≤ ≥ ≠ ≡ ≅ ≜ ≝ ≐ ≃ ≈ ⊕ ⊗ ⇐ ⇔ ⇒ ∞ ← ↔ → ≪ ≫ ∝ √ ∤ ≀ ◅ ▻ ⋉ ⋊ ⋈ ∴ ∵ ↦ ¬ ∧ ∨ ⊻ ∀ ∃ ∈ ∉ ∋ ⊆ ⊈ ⊊ ⊂ ⊄ ⊇ ⊉ ⊋ ⊃ ⊅ ∪ ∩ ∑ ∏ ∐ ′ ∫ ∬ ∭ ∮ ∇ ∂ ∆ ∅ ℂ ℍ ℕ ℙ ℚ ℝ ℤ ℵ ⌊ ⌋ ⌈ ⌉ ⊤ ⊥ ⊢ ⊣ ⊧ □ ∠ ⟨ ⟩ &nb'+'sp; &minus; #¹²³¼½¾⅓⅔⅛⅜⅝⅞'
         },
         },


Line 72: Line 74:
                     sel.selectedIndex = prevSubset;
                     sel.selectedIndex = prevSubset;
                     selectSubset();
                     selectSubset();
                 }
                 };
                 with ( recall.style ) {
                 with ( recall.style ) {
                     cssFloat = styleFloat = 'left';
                     cssFloat = styleFloat = 'left';
Line 118: Line 120:
                 if ( !p ) {
                 if ( !p ) {
                     p = document.createElement( 'p' );
                     p = document.createElement( 'p' );
                    p.className = "nowraplinks";
                     p.id = id;
                     p.id = id;
                     if ( id == 'Arabic' || id == 'Hebrew' ) {
                     if ( id == 'Arabic' || id == 'Hebrew' ) {
Line 177: Line 180:
                     var path = tagOpen.substring( dle + 1 ).split( '.' );
                     var path = tagOpen.substring( dle + 1 ).split( '.' );
                     tagOpen = tagOpen.substring( 0, dle );
                     tagOpen = tagOpen.substring( 0, dle );
                     var handler = window;
                     handler = window;
                     for ( var i = 0; i < path.length; i++ ) {
                     for ( var i = 0; i < path.length; i++ ) {
                         handler = handler[path[i]];
                         handler = handler[path[i]];
Line 186: Line 189:
                     handler = new Function(
                     handler = new Function(
                         "evt",
                         "evt",
                         "insertTags('" + tagOpen + "', '" + tagClose + "', ''); return killEvt( evt );"
                         "mw.toolbar.insertTags('" + tagOpen + "', '" + tagClose + "', ''); evt.preventDefault(); return false;"
                     );
                     );
                 }
                 }
Line 194: Line 197:
                 a.appendChild( document.createTextNode( name ) );
                 a.appendChild( document.createTextNode( name ) );
                 a.href = "#";
                 a.href = "#";
                 addHandler( a, 'click', handler );
                 $( a ).click( handler );
                 paragraph.appendChild( a );
                 paragraph.appendChild( a );
                 addText( ' ' );
                 addText( ' ' );
Line 211: Line 214:


         enableForAllFields: function () {
         enableForAllFields: function () {
             if ( typeof( insertTags ) != 'function' || window.WikEdInsertTags ) {
             if ( typeof( mw.toolbar.insertTags ) != 'function' || window.WikEdInsertTags ) {
                 return;
                 return;
             }
             }
Line 224: Line 227:
             var texts = document.getElementsByTagName( 'textarea' );
             var texts = document.getElementsByTagName( 'textarea' );
             for ( var i = 0; i < texts.length; i++ ) {
             for ( var i = 0; i < texts.length; i++ ) {
                 addHandler( texts[i], 'focus', EditTools.registerTextField );
                 $( texts[i] ).focus( EditTools.registerTextField );
             }
             }
             // While we're at it, also enable it for input fields
             // While we're at it, also enable it for input fields
Line 230: Line 233:
             for ( var i = 0; i < texts.length; i++ ) {
             for ( var i = 0; i < texts.length; i++ ) {
                 if ( texts[i].type == 'text' ) {
                 if ( texts[i].type == 'text' ) {
                     addHandler( texts[i], 'focus', EditTools.registerTextField );
                     $(texts[i]).focus( EditTools.registerTextField );
                 }
                 }
             }
             }
             insertTags = EditTools.insertTags; // Redefine the global insertTags
             mw.toolbar.insertTags = EditTools.insertTags; // Redefine the global insertTags
         },
         },


Line 276: Line 279:


             /* Usability initiative compatibility */
             /* Usability initiative compatibility */
             if ( typeof $j != 'undefined' && typeof $j.fn.textSelection != 'undefined' ) {
             if ( typeof $jQuery != 'undefined' && typeof $jQuery.fn.textSelection != 'undefined' ) {
                 $j( txtarea ).textSelection(
                 $jQuery( txtarea ).textSelection(
                     'encapsulateSelection',
                     'encapsulateSelection',
                     { 'pre': tagOpen, 'peri': sampleText, 'post': tagClose }
                     { 'pre': tagOpen, 'peri': sampleText, 'post': tagClose }
Line 353: Line 356:
         setup: function () {
         setup: function () {
             var placeholder;
             var placeholder;
             if ( $( '#editpage-specialchars' ).length ) {
             if ( $( '#mw-edittools-charinsert' ).length ) {
                placeholder = $( '#editpage-specialchars' )[0];
                placeholder = $( '#mw-edittools-charinsert' )[0];
            } else if ( $( '#editpage-specialchars' ).length ) {
              placeholder = $( '#editpage-specialchars' )[0];
             } else {
             } else {
                 placeholder = $( '<div id="editpage-specialchars"> </div>' ).prependTo( '.mw-editTools' )[0];
                 placeholder = $( '<div id="editpage-specialchars"> </div>' ).prependTo( '.mw-editTools' )[0];
Line 361: Line 366:
                 return;
                 return;
             }
             }
            EditTools.createEditTools( placeholder );
            EditTools.enableForAllFields();
            placeholder = $( '#editpage-specialchars' )[0];
             if ( !window.charinsertDontMove ) {
             if ( !window.charinsertDontMove ) {
                 $( '.editOptions' ).before( placeholder );
                 $( '.editOptions' ).before( placeholder );
             }
             }
            EditTools.createEditTools( placeholder );
            EditTools.enableForAllFields();
             window.updateEditTools = function () {
             window.updateEditTools = function () {
                 EditTools.createEditTools( $( '#editpage-specialchars' )[0] );
                 EditTools.createEditTools( $( '#editpage-specialchars' )[0] );