User:DStoykov/defaultsort test.js

/* */

function defaultsort { var apiurl = mw.config.get('wgServer')+mw.config.get('wgScriptPath')+'/api.php?action=query&meta=siteinfo&siprop=namespaces&format=xml'; var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : null; xmlhttp.open('GET',apiurl, false); xmlhttp.send(null); var namespacesXML = xmlhttp.responseXML.getElementsByTagName('ns');

for (i=0; i<namespacesXML.length; i++) { if (namespacesXML[i].attributes.getNamedItem('id').value.match('14')) { catcname = namespacesXML[i].childNodes[0].nodeValue; } } alert (document.cookie); var txt = document.editform.wpTextbox1.value; var sortkey = ''; // create an array of all category links if (txt.match(/\{\{\s*defaultsort/i)) { alert('There\'s already a defaultsort statement!'); return; var catlinks = txt.match(/\[\[\s*((C|K)at(e|é)gor(y|i|ie|ia|ía|ija|io)|Кат(е|э)гор(ия|ија|ія|ыя)|Luokka|Flokkur|Κατηγορία)\s*:.*\]\]/ig); }    if (!catlinks) { alert('There are no category links!'); return; }    for (i=0; i< catlinks.length; i++) { // extract the name of the category var catname = catlinks[i].replace(/.+\s*:\s*([^|]*[^|\s])\s*(\|.*)?\]\]/,"$1"); // extract the sort key var match = /\|[^\]]+/.exec(catlinks[i]); if (match == null) { alert('Category '+catname+' doesn\'t include a sort key!'); return; }       // strip the '|' and any trailing spaces var sk = match[0].replace(/\|(.+)/, "$1").replace(/(\S) +$/,"$1"); if (i == 0) { sortkey = sk; } else { if (sortkey != sk) { alert('Not all sort keys are identical!\nThe sort key for category '+catname+' is different.'); return; }       }    }    // Now that we know that everything is OK, we can proceed with modifying the content of the editbox txt=txt.replace(catlinks[0], "\n"+catlinks[0]); for (i=0; i< catlinks.length; i++) { subst = catlinks[i].replace(/\|[^\]]+/,""); txt=txt.replace(catlinks[i], subst); }   document.editform.wpTextbox1.value=txt; }

addOnloadHook(function {  if(document.forms.editform) {    addPortletLink('p-cactions', 'javascript:defaultsort', 'defaultsort', 'ca-defaultsort', , , document.getElementById('ca-purge'));  } });

/* */