Bikarhêner:Ghybu/vector.js
Zanibe: Piştî weşandinê, ji bo dîtina guhartinan dibe ku hewce be "cache"ya geroka xwe paqij bikî.
- Firefox / Safari: Pê li Shift û Reload bike an jî Ctrl-F5 an Ctrl-R bike (ji bo Mac: ⌘-R)
- Google Chrome: Pê li Ctrl-Shift-R (ji bo Mac: ⌘-Shift-R) bike
- Internet Explorer / Edge: Pê li Ctrl û Refresh bike, an jî Ctrl-F5 bike
- Opera: Pê li Ctrl-F5 bike.
// copied and modified from english wiktionary user Yair rand
// http://en.wiktionary.org/wiki/User:Yair_rand/rhymesedit.js
// version 1.11
/*
Yay, a rhymes editor that automatically updates the entry for the added rhyme.
To do:
*Make less ugly
*Ability to remove/edit rhymes
*Put rhyme template at the bottom of pronunciation section?
*Fix jillion bugs (none of which I'm aware of yet, but I'll find them...)
*Add qualifier button
*/
// drag and drop von Links fuer Eingabefelder
document.addEventListener("drop", function( event ) {
event.preventDefault();
if ( event.target.className == "dragtarget" ) {
var data = decodeURI(event.dataTransfer.getData("text"));
var lio = data.lastIndexOf('/');
if (lio >= 0) {
data = data.slice(lio + 1);
}
lio = data.lastIndexOf('index.php?title=');
var idx = data.indexOf('&');
if (lio >= 0 && idx >= 0) {
data = data.slice(lio + 16,idx);
}
idx = data.indexOf('#');
if (idx > 0) {
data = data.slice(0,idx);
}
event.target.value = data;
}
}, false);
function buildUrl(t){
return buildUrl2(t,"&action=raw&maxage=0");
}
function buildUrl2(t,p){
return mw.config.get("wgServer")+mw.config.get("wgScript")+"?title="+mw.util.wikiUrlencode(t)+p;
}
window.rhymesedit = window.rhymesedit || {};
// declared here, to be called from checkpage or GUI
rhymesedit.after_save_text = function(text, rhymehome, langname){
var ta=text.split(/(\n==[^=]+?)/);
var tb=[];
var i,j;
for (i=0;i<ta.length;i++){
if (ta[i].indexOf('{{Sprache|'+langname+'}}')>=0){
var r2='{{Reim|'+rhymehome+'|'+langname+'}}\n';
var r1=':{{Reime}} '+r2;
tb=ta[i].split(/(\n===[^=]+?)/);
for (j=1;j<tb.length;j++){
if (tb[j].length==5) continue;
if (tb[j].indexOf(':{{Reime}}')<0){
if (tb[j].indexOf(':{{Hörbeispiele}}')>=0){
tb[j]=tb[j].replace( /(:\{\{Hörbeispiele[^\v]+?\n)/,'$1'+r1);
} else if (tb[j].indexOf(':{{IPA}}')>=0){
tb[j]=tb[j].replace( /(:\{\{IPA[^\v]+?\n)/,'$1:{{Hörbeispiele}} {{Audio|}}\n'+r1);
} else if (tb[j].indexOf('{{Aussprache}}')>=0){
tb[j]=tb[j].replace( /(\{\{Aussprache[^\v]+?\n)/,'$1:{{IPA}} {{Lautschrift|}}\n:{{Hörbeispiele}} {{Audio|}}\n'+r1);
} else {
tb[j]=tb[j].replace( /(\{\{Worttrennung[^\v]+?\n)\{\{/,'$1{{Aussprache}}\n:{{IPA}} {{Lautschrift|}}\n:{{Hörbeispiele}} {{Audio|}}\n'+r1+'\n{{' );
}
} else if (tb[j].indexOf('{{Reim|'+rhymehome+'|')<0){
tb[j]=tb[j].replace( /(\{\{Reim[^\v]+?)\n/,'$1, '+r2);
}
}
ta[i]=tb.join('');
}
}
return ta.join('');
};
var currAdderText = "";
var ccc;
var numberOfRhymesAdded = 0;
function setUpRhymeAdder(qq,ii)
{
function getRhymeValue() {
var r={'name':'rhyme','class':'dragtarget'};
var m;
if (m=RegExp('[&?]rhyme=([^&]*)').exec(document.location)) {
try {
r.value=decodeURI(m[1]);
return r;
} catch (someError) {}
}
return r;
}
function toSortOrder(s) {
var i,
r='';
for(i=0;i<s.length;i++){
switch(s.charAt(i).toLowerCase()){
case 'ä': r+="aa"; break;
case 'ö': r+="oo"; break;
case 'ß': r+="ss"; break;
case 'ü': r+="uu"; break;
default: r+=s.charAt(i).toLowerCase()+' ';
}
}
return r+' '+s;
}
function handleRhymeResponse(data) {
currAdderText = data;
}
$.get(buildUrl(mw.config.get("wgPageName")), handleRhymeResponse);
var wTitle='Reimwort hinzufügen: ';
var u=ii.previousSibling;
if (u) u=u.previousSibling; // Header
if (u) {
u=$(u).children(".mw-headline");
if (u.length > 0) {
wTitle=$(u[0]).text();
wTitle='Reimwort hinzufügen ('+wTitle+'): ';
}
}
var findNumberOfHeaders = +qq.lastChild.getElementsByTagName('a')[0].href.match(/\d*$/),
qqq;
editor=new Editor();
new AdderWrapper(editor,
{
'createForm':function(){
return qqq=newNode('form',{'class':'noprint'},
newNode('label',wTitle,
newNode('input',getRhymeValue())
),
newNode('input',{'type':'submit','value':'+'})
)},
'fields':{'rhyme':function(txt,error){
var found = false;
var et = editor.getCurrentText();
if (et.length == 0) {
et = currAdderText;
}
if (et.indexOf('[['+txt+']]') >= 0){
found = true;
};
if (found) {
return ''||error('Eingabe bereits vorhanden.');
} else {
return $.trim(txt)||error('Bitte ein Reimwort eingeben.')}
}},
'onsubmit':function(values, render){
var langname = mw.config.get("wgTitle").split(':')[0];
if((new LangMetadata()).cleanLangCode(langname) == langname && !setUpRhymeAdder.langCode){
$.get(mw.config.get("wgServer")+mw.config.get("wgScript")+"?title=Template:langrev/"+langname+"&action=raw",function(c){setUpRhymeAdder.langCode = c});
}
qqq.getElementsByTagName('input')[0].value = "";
render('[['+values.rhyme+']]',function(newhtml){
var temp=newNode('li');temp.innerHTML=newhtml;
var iii, iiii, rh;
editor.addEdit({
'edit':function(wikitext){
wikitext=wikitext.replace(/\n\*\[/g,'\n* [');
if(!/Category:.+$/.test(wikitext)){wikitext+="\n"}
iiii=wikitext.indexOf('=');iii=1;
while(iii<findNumberOfHeaders){iiii+=wikitext.substr(iiii+1).search(/\n=/)+1;iii++}
iiii+=wikitext.substr(iiii+1).search(/\*|\n\n|\n[^=\n]*$|\n=/)+1;
iiii += wikitext.charAt(iiii) == "\n";
iii = 0;
rh=toSortOrder("* [["+values.rhyme+"]]");
while(wikitext.substr(iiii).match(/^[^=]*\*/)&&toSortOrder(String(wikitext.substr(iiii).match(/.*/)))<rh)
{iiii+=wikitext.substr(iiii).search(/\n(?!\{)|$/)+1;iii++}
wikitext=wikitext.substr(0,iiii)+(wikitext.charAt(iiii-1)==''?'\n':'')+'* [[' + values.rhyme + ']]\n'+wikitext.substr(iiii)
return ccc=wikitext
},
'redo':function(){var lis = ii.getElementsByTagName('li'); (lis[iii]||lis[iii-1]).parentNode.insertBefore(temp, lis[iii] || null)},
'undo':function(){var lis = ii.getElementsByTagName('li'); (lis[iii]||lis[iii-1]).parentNode.removeChild(temp)},
'summary':"+Reim [["+values.rhyme+"]]",
'after_save':function(){
numberOfRhymesAdded++;
document.body.style.cursor = 'wait';
JsMwApi().page(values.rhyme).edit(
function(text, saveFunction, editRes){
if(editRes.query.pages.hasOwnProperty("-1")) {
document.body.style.cursor= --numberOfRhymesAdded ? 'wait' : '';
return;
}
var langcode = setUpRhymeAdder.langCode || (new LangMetadata()).cleanLangCode(langname);
var rhymehome = mw.config.get("wgTitle").split(":")[1].substr(1);
text = rhymesedit.after_save_text(text, rhymehome, langname);
saveFunction(text, {summary: "+Reim [[" + mw.config.get("wgPageName") + "|-" + rhymehome + "]]"}, function(){
document.body.style.cursor= --numberOfRhymesAdded ? 'wait' : '';
})
}
)
}
},temp)
}
)
}
},qq.parentNode,ii.nextSibling)
}
function setUpListAdder(ul,formnode)
{
function getRhymeValue() {
var r={'name':'rhyme','class':'dragtarget'}
var m;
if (m=RegExp('[&?]rhyme=([^&]*)').exec(document.location)) {
try {
r.value=decodeURI(m[1]);
return r;
} catch (someError) {}
}
return r;
}
function toSortOrder(s) {
var i,
r='';
s=s.replace(/\[\[/g,'').replace(/\]\]/g,'');
for(i=0;i<s.length;i++){
switch(s.charAt(i).toLowerCase()){
case 'ä': r+="aa"; break;
case 'ö': r+="oo"; break;
case 'ß': r+="ss"; break;
case 'ü': r+="uu"; break;
default: r+=s.charAt(i).toLowerCase()+' ';
}
}
return r+String.fromCharCode(1)+s;
}
function handleListResponse(data) {
listAdderText = data;
}
$.get(buildUrl(mw.config.get("wgPageName")), handleListResponse);
// ul.li.a.value
var wHeader, form;
var wTitle='Einfügen: ';
var star="*********".substr(0,1+$(ul).parents("ul").length);
var u=formnode.previousSibling
if (u) u=u.previousSibling; // Header
if (u) {
u=$(u).children(".mw-headline");
if (u.length > 0) {
wTitle=$(u[0]).text();
wTitle='Einfügen (unter '+wTitle+'): ';
}
}
var li=ul.firstChild;
while(li.nodeName!="LI" && li.nextSibling){
li=li.nextSibling;
}
li=li.firstChild;
if (!li) {return;}
if (li.nodeType==3){
wHeader = $.trim(li.nodeValue);
if (!wHeader.length==0){
wHeader = $.trim(li.innerText);
}
wHeader = star+wHeader;
}else{
wHeader = star+"[["+li.firstChild.nodeValue+"]]\n";
}
var editor=new Editor();
new AdderWrapper(editor,
{
'createForm':function(){
return form=newNode(
'form',
{'class':'noprint'},
newNode('label',wTitle, newNode('input',getRhymeValue())),
newNode('input',{'type':'submit','value':'+'})
)
},
'fields':{'rhyme':function(txt,error){
var found = false;
var et = editor.getCurrentText();
if (et.length == 0) {
et = currAdderText;
}
if (et.indexOf('[['+txt+']]') >= 0){
found = true;
};
if (found) {
return ''||error('Eingabe bereits vorhanden.')
} else {
return $.trim(txt)||error('Bitte etwas eingeben.')}
}},
'onsubmit':function(values, render){
form.getElementsByTagName('input')[0].value = "";
render('[['+values.rhyme+']]',function(newhtml){
var temp=newNode('li');temp.innerHTML=newhtml;
var iii, ih,ihp, rh;
editor.addEdit({
'edit':function(wikitext){
wikitext=wikitext.replace(/\n\* \[/g,'\n*[');
if(wikitext.charAt(wikitext.length-1) != '\n'){wikitext+='\n';}
ih=wikitext.indexOf(wHeader);
do {
ihp=ih;
ih=wikitext.lastIndexOf('\n',ihp-1);
if(ih == 0 && wikitext.charAt(ih+1) == '*'){ihp=ih;}
} while(ih>0 && wikitext.substr(ih+1,star.length) == star);
if(wikitext.charAt(ihp) == '\n'){ihp++;}
if(ihp==0 || ihp > 0 && wikitext.charAt(ihp-1) == '\n'){
iii = 0;
rh=toSortOrder(star+values.rhyme);
var notfound=true;
do {
var wt=toSortOrder(wikitext.substring(ihp,wikitext.indexOf('\n',ihp+1)));
if (toSortOrder(wikitext.substring(ihp,wikitext.indexOf('\n',ihp+1))) > rh) {
notfound=false;
}else{
ihp = wikitext.indexOf('\n',ihp+1);
iii++;
ihp++;
if(wikitext.charAt(ihp) != '*'){
notfound=false;
}
}
} while (notfound);
wikitext=wikitext.substr(0,ihp)+(wikitext.charAt(ihp-1)==''?'\n':'')
+star+'[[' + values.rhyme + ']]\n'+wikitext.substr(ihp)
}
return wikitext
},
'redo':function(){
var lis = ul.getElementsByTagName('li');
if(iii>=lis.length){
ul.appendChild(temp);
}else{
ul.insertBefore(temp, lis[iii] || null)
}
},
'undo':function(){
var lis = ul.getElementsByTagName('li');
ul.removeChild(temp)
},
'summary':"+[["+values.rhyme+"]]"
},temp)
}
)
}
},ul.parentNode,formnode)
}
jQuery(window).ready(function(){
var ns=mw.config.get("wgNamespaceNumber");
if (ns==106 && mw.config.get("wgAction")=="view" && !window.dontLoadRhymesAdder)
{
for(var i=0, q=document.getElementsByTagName('h3');i<q.length;i++)
{
if(q[i].innerHTML.indexOf("silbig")!=-1)
{
var ii = q[i].nextSibling;
while(ii&&(!ii.nodeName||!(ii.nodeName=="UL"||ii.nodeName=="DIV"||ii.nodeName=="H3"))){ii=ii.nextSibling}
if( !ii || !ii.nodeName ){
ii = q[i].parentNode.appendChild(newNode('ul', newNode('li', {'style':'display:none;'})));
}
if( ii.nodeName == "H3" ){
ii = ii.parentNode.insertBefore(newNode('ul', newNode('li', {'style':'display:none;'})), ii);
}
setUpRhymeAdder(q[i], ii);
}
}
$("#mw-content-text h3 + ul").attr( "style", "columns: 7 11em; -moz-columns: 7 11em; -webkit-columns: 7 11em" );
}
if((ns==104) && mw.config.get("wgAction")=="view")
{
if($("div.jsNoAdd:first").length < 1) {
var ul=$("div.jsAdd ul").each(function(index, element) {
setUpListAdder(element,element);
});
if(ul.length < 1){
$("#mw-content-text ul:not(#toc ul)").each(function(index, element) {
setUpListAdder(element,element);
});
}
}
}
if((ns==2||ns==4||ns==102) && mw.config.get("wgAction")=="view")
{
$("div.jsAdd ul").each(function(index, element) {
setUpListAdder(element,element);
});
var style = $("div.jsStyle:first");
if (style.length > 0) {
$(style[0].dataset.p1).attr( "style", style[0].dataset.p2 );
}
}
if((ns==14) && mw.config.get("wgAction")=="view")
{
var form,node;
if(mw.config.get("wgTitle").substr(0,23)=="Rückläufige Wörterliste"){
form=newNode(
'form',
{'class':'noprint'},
newNode('label','Liste starten bei Einträgen, die enden auf: ',
newNode('input',{'name':'pagefrom','id':'morfegap'})),
newNode('input',{'type':'button','value':'Los'})
);
form.lastChild.onclick=function(){
var pf=document.getElementById("morfegap");
var r="";
for (var i=pf.value.length-1;i>=0;i--){
r+=pf.value.charAt(i);
}
location.href=mw.config.get("wgServer")+mw.config.get("wgScript")
+"?title="+mw.util.wikiUrlencode(mw.config.get("wgPageName"))
+"&pagefrom="+mw.util.wikiUrlencode(r);
};
$("#mw-pages h3").attr( "dir", "rtl" ).wrapInner("<span dir='ltr'></span>");
$("#mw-pages ul").attr( "dir", "rtl" );
$("#mw-pages li").wrapInner("<span dir='ltr'></span>");
} else {
form=newNode(
'form',
{'class':'noprint'},
newNode('label','Liste starten bei Einträgen, die beginnen mit: ',
newNode('input',{'name':'pagefrom','id':'morfegap'})),
newNode('input',{'type':'button','value':'Los'})
);
form.lastChild.onclick=function(){
var pf=document.getElementById("morfegap");
location.href=mw.config.get("wgServer")+mw.config.get("wgScript")
+"?title="+mw.util.wikiUrlencode(mw.config.get("wgPageName"))
+"&pagefrom="+mw.util.wikiUrlencode(pf.value);
};
}
node=document.getElementById("mw-content-text");
node.parentNode.insertBefore(form,node);
$('#morfegap').keypress(function (e) {
if (e.which == 13) {
form.lastChild.onclick();
return false;
}
});
}
// inputboxextension
if((ns==2||ns==4) && mw.config.get("wgAction")=="view")
{
var ibeid;
var ibewidth;
$(".inputboxextension tr").each(function(index) {
var tf = $( this.firstElementChild ).text();
var tl = $( this.lastElementChild ).text();
if (index % 5 == 0) { // id und width auslesen
ibeid = tf;
ibewidth = tl;
} else if (index % 5 == 1) { // inputbox ermitteln und in tabelle einpacken
$("#"+ibeid + " .createboxInput")
.wrap('<table><tr><td></td></tr></table>')
.parent().before('<td>'+ tf +'</td>')
.after('<td>'+ tl +'</td>');
} else if (tf.substr(0,3) != "{{{") { // weitere parameterinputfelder anfügen
$("#"+ibeid + " tr:last")
.after('<tr><td>'+tf+
'</td><td><input name="preloadparams[]" value="" size="'+ibewidth+
'" type="text"></td><td>'+ tl +'</td></tr>');
}
});
}
});