1var plugin_ikso_konfirmo = jQuery.cookie('DW_PLUGIN_IKSO_NE_MONTRU_DENOVE'); 2var plugin_ikso_dialogo_jam_aperis = false; 3 4jQuery(function() { 5 if (typeof plugin_ikso_konfirmo === "undefined") { 6 // kuketo mankas, enmetu <div>-on kun teksto por la modala dialogo fine de la paĝo 7 jQuery( 8 '<div id="plugin_ikso__modala_dialogo" title="Avizo" style="display:none;overflow-x:auto">' 9 + '<table style="margin:0 auto;border:0px !important">' 10 + '<tr>' 11 + '<td colspan="6" style="border:0px !important">En iu ajn tekstokampo vi povas tajpi laŭ la "X-kodo":</td>' 12 + '</tr>' 13 + '<tr>' 14 + '<td style="border:0px !important">cx → ĉ</td>' 15 + '<td style="border:0px !important">gx → ĝ</td>' 16 + '<td style="border:0px !important">hx → ĥ</td>' 17 + '<td style="border:0px !important">jx → ĵ</td>' 18 + '<td style="border:0px !important">sx → ŝ</td>' 19 + '<td style="border:0px !important">ux → ŭ</td>' 20 + '</tr>' 21 + '<tr>' 22 + '<td colspan="6" style="border:0px !important;padding-top:1.5em">Tajpu aldonan ikson por malĉapeligi literon:</td>' 23 + '</tr>' 24 + '<tr>' 25 + '<td style="border:0px !important">ĉx → cx</td>' 26 + '<td style="border:0px !important">ĝx → gx</td>' 27 + '<td style="border:0px !important">ĥx → hx</td>' 28 + '<td style="border:0px !important">ĵx → jx</td>' 29 + '<td style="border:0px !important">ŝx → sx</td>' 30 + '<td style="border:0px !important">ŭx → ux</td>' 31 + '</tr>' 32 + '</table>' 33 + '</div>' 34 ).appendTo('body'); 35 } 36 37 // kaptu eventojn en ĉiuj tekstokampoj 38 jQuery('input[type="text"],textarea') 39 .not('#plugin__captcha_wrapper > input.edit') // krom kampoj por testo CAPTCHA 40 .each(function() { 41 42 // fokuso: montru la modalan dialogon se necese 43 jQuery(this).focus(function(event) { 44 if (typeof plugin_ikso_konfirmo === "undefined" && !plugin_ikso_dialogo_jam_aperis) { 45 plugin_ikso_dialogo_jam_aperis = true; 46 jQuery("#plugin_ikso__modala_dialogo").dialog({ 47 modal: true, resizable: false, width: 'auto', height: 'auto', closeText: 'Fermi', 48 buttons: { 49 50 // kreu kuketon por ne montri la modalan dialogon dum tuta jaro kaj fermu la dialogon 51 "Mi komprenis, ne montru tion denove": function() { 52 jQuery.cookie('DW_PLUGIN_IKSO_NE_MONTRU_DENOVE', true, { 53 expires: 365, 54 path: (typeof DOKU_COOKIE_PARAM.path === "undefined" 55 ? JSINFO.DOKU_COOKIE_PARAM.path : DOKU_COOKIE_PARAM.path), 56 secure: (typeof DOKU_COOKIE_PARAM.secure === "undefined" 57 ? JSINFO.DOKU_COOKIE_PARAM.secure : DOKU_COOKIE_PARAM.secure) 58 }); 59 jQuery(this).dialog("close"); 60 }, 61 62 // simple fermu la dialogon 63 "Rememoru min poste": function() { 64 jQuery(this).dialog("close"); 65 } 66 }, 67 68 // lasu "Rememoru min poste" elektita post apero 69 open: function() { 70 jQuery(this).parent().find('.ui-dialog-buttonpane button:eq(1)').focus(); 71 } 72 }); 73 } 74 }); 75 76 // tajpado: ĉapeligu la kampon se la lasta signo estis ikso 77 jQuery(this).keyup(function(event) { 78 if (event.which == 88) { // x 79 Cxapelado_Cxapeligi(event.target); 80 } else if (event.which == 229) { 81 // http://stackoverflow.com/questions/26123177/android-chrome-keypress-event-is-not-returning-any-key-data-jquery 82 var currentCursorPos = jQuery(this)[0].selectionStart; 83 var val = jQuery(this).val(); 84 var firstPrevious = val.charAt(currentCursorPos - 1); 85 if (firstPrevious == 'x' || firstPrevious == 'X') { 86 Cxapelado_Cxapeligi(event.target); 87 } 88 } 89 }); 90 }); 91}); 92 93// code below taken from WordPress plugin Cxapelado 0.3 94// suba kodo ĉerpita el WordPress-a kromaĵo Cxapelado 0.3 95// https://wordpress.org/plugins/cxapelado/ 96 97function Cxapelado_Cxapeligi(kampo) { 98 if (kampo.selectionStart || kampo.selectionStart == "0") { 99 var ekPoz = kampo.selectionStart; 100 if (ekPoz > 1) { 101 var literox = kampo.value.substr(ekPoz-2,2); 102 var literou = Cxapelado_VereCxapeligi(literox); 103 kampo.value = kampo.value.substr(0,ekPoz-2) + literou + kampo.value.substr(ekPoz); 104 var celoPoz = ekPoz-(literox.length-literou.length); 105 Cxapelado_kreiElektajxon(kampo,celoPoz,celoPoz); 106 } 107 } else if (document.selection) { 108 var markilo = "\x7f"; // Retropaŝa signo - uzata nur ĉar apenaŭ estas risko, ke ĝi estas uzata intence de la uzanto 109 var markiloREG = new RegExp(markilo); 110 var rng = document.selection.createRange(); 111 rng.text = markilo; 112 rng.select(); 113 var loko = kampo.value.indexOf(markilo); 114 kampo.value = kampo.value.replace(markiloREG,''); 115 if (loko > 1) { 116 var komenco = kampo.value.substr(1,loko); 117 var l = 0; 118 var linioj; 119 if (linioj = komenco.match(/\n/g)) { 120 l = linioj.length; 121 } 122 var literox = kampo.value.substr(loko-2,2); 123 var literou = Cxapelado_VereCxapeligi(literox); 124 kampo.value = kampo.value.substr(0,loko-2) + literou + kampo.value.substr(loko); 125 var celoPoz = loko-l-(literox.length-literou.length); 126 Cxapelado_kreiElektajxon(kampo,celoPoz,celoPoz); 127 } else { 128 Cxapelado_kreiElektajxon(kampo,loko,loko); 129 } 130 } 131} 132 133var Cxapelado_literoj = new Object; 134Cxapelado_literoj.cxRX = /c[Xx]/g; 135Cxapelado_literoj.gxRX = /g[Xx]/g; 136Cxapelado_literoj.hxRX = /h[Xx]/g; 137Cxapelado_literoj.jxRX = /j[Xx]/g; 138Cxapelado_literoj.sxRX = /s[Xx]/g; 139Cxapelado_literoj.uxRX = /u[Xx]/g; 140Cxapelado_literoj.CxRX = /C[Xx]/g; 141Cxapelado_literoj.GxRX = /G[Xx]/g; 142Cxapelado_literoj.HxRX = /H[Xx]/g; 143Cxapelado_literoj.JxRX = /J[Xx]/g; 144Cxapelado_literoj.SxRX = /S[Xx]/g; 145Cxapelado_literoj.UxRX = /U[Xx]/g; 146Cxapelado_literoj.cxxRX = /ĉ([Xx])/g; 147Cxapelado_literoj.gxxRX = /ĝ([Xx])/g; 148Cxapelado_literoj.hxxRX = /ĥ([Xx])/g; 149Cxapelado_literoj.jxxRX = /ĵ([Xx])/g; 150Cxapelado_literoj.sxxRX = /ŝ([Xx])/g; 151Cxapelado_literoj.uxxRX = /ŭ([Xx])/g; 152Cxapelado_literoj.CxxRX = /Ĉ([Xx])/g; 153Cxapelado_literoj.GxxRX = /Ĝ([Xx])/g; 154Cxapelado_literoj.HxxRX = /Ĥ([Xx])/g; 155Cxapelado_literoj.JxxRX = /Ĵ([Xx])/g; 156Cxapelado_literoj.SxxRX = /Ŝ([Xx])/g; 157Cxapelado_literoj.UxxRX = /Ŭ([Xx])/g; 158function Cxapelado_VereCxapeligi(t) { 159 t = t.replace(Cxapelado_literoj.cxRX,"ĉ"); 160 t = t.replace(Cxapelado_literoj.gxRX,"ĝ"); 161 t = t.replace(Cxapelado_literoj.hxRX,"ĥ"); 162 t = t.replace(Cxapelado_literoj.jxRX,"ĵ"); 163 t = t.replace(Cxapelado_literoj.sxRX,"ŝ"); 164 t = t.replace(Cxapelado_literoj.uxRX,"ŭ"); 165 t = t.replace(Cxapelado_literoj.CxRX,"Ĉ"); 166 t = t.replace(Cxapelado_literoj.GxRX,"Ĝ"); 167 t = t.replace(Cxapelado_literoj.HxRX,"Ĥ"); 168 t = t.replace(Cxapelado_literoj.JxRX,"Ĵ"); 169 t = t.replace(Cxapelado_literoj.SxRX,"Ŝ"); 170 t = t.replace(Cxapelado_literoj.UxRX,"Ŭ"); 171 t = t.replace(Cxapelado_literoj.cxxRX,"c$1"); 172 t = t.replace(Cxapelado_literoj.gxxRX,"g$1"); 173 t = t.replace(Cxapelado_literoj.hxxRX,"h$1"); 174 t = t.replace(Cxapelado_literoj.jxxRX,"j$1"); 175 t = t.replace(Cxapelado_literoj.sxxRX,"s$1"); 176 t = t.replace(Cxapelado_literoj.uxxRX,"u$1"); 177 t = t.replace(Cxapelado_literoj.CxxRX,"C$1"); 178 t = t.replace(Cxapelado_literoj.GxxRX,"G$1"); 179 t = t.replace(Cxapelado_literoj.HxxRX,"H$1"); 180 t = t.replace(Cxapelado_literoj.JxxRX,"J$1"); 181 t = t.replace(Cxapelado_literoj.SxxRX,"S$1"); 182 t = t.replace(Cxapelado_literoj.UxxRX,"U$1"); 183 return t; 184} 185 186function Cxapelado_kreiElektajxon(input, selectionStart, selectionEnd) { 187 if (input && input.setSelectionRange) { 188 input.focus(); 189 input.setSelectionRange(selectionStart, selectionEnd); 190 } else if (input && input.createTextRange) { 191 var range = input.createTextRange(); 192 range.collapse(true); 193 range.moveEnd("character", selectionEnd); 194 range.moveStart("character", selectionStart); 195 range.select(); 196 } 197} 198