/* irset.js */ // var IRSet = { /* the items of our sidebar */ sidebarElements: new Array( // first column new Array( // addSLA (SLA+) new Array( function() { return !IRSet.isSpecial(); }, new Array( "SLA+", function() { IRSet.addSLA(); } ) ) ), // second column new Array( // Logbücher new Array( function() { return !IRSet.isSpecial(); }, new Array( "Logbücher", function() { IRSet.specialLog(); } ) ) ) ), /* users who want a simple sla script */ onlySLAUsers: new Array( "Meister-Lampe" ), /* does this user only want a simple sla script? */ onlySLA: function() { var ret = false; for (var user in IRSet.onlySLAUsers) { if (IRSet.onlySLAUsers[user] == wgUserName) { ret = true; } } return ret; }, /* is this page a special page? */ isSpecial: function() { return (wgCanonicalNamespace == "Special"); }, /* are we in edit mode? */ isEdit: function() { return (wgAction == "edit"); }, /* are we in submit mode? */ isSubmit: function() { return (wgAction == "submit"); }, /* trim a string */ trim : function(str) { return str.replace(/^\s+/, '').replace(/\s+$/, ''); }, /* open this page in edit mode */ openEdit: function(app) { var url = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(mw.config.get('wgPageName')) + "&action=edit&" + app; window.location = url; }, /* parse the URL and return the GET param */ getURLParam: function(key) { var nkey = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + nkey + "=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(window.location.href); if (results == null) { return ""; } else { return results[1]; } }, /* create the sidebar and fill it */ init: function() { if (IRSet.onlySLA()) { IRSet.createSLAButton(); } else { IRSet.createSidebar(); } if (IRSet.trim(IRSet.getURLParam("irsla")) == "1" && IRSet.trim(IRSet.getURLParam("irreason")) != "") { IRSet.doSLA(IRSet.trim(unescape(IRSet.getURLParam("irreason")))); } }, /* create the SLA button */ createSLAButton: function() { var a = document.createElement("a"); a.textContent = "SLA+"; a.onclick = function() { IRSet.addSLA(); }; a.style.cursor = "default"; var li = document.createElement("li"); li.appendChild(a); li.className = "collapsible"; var watch = document.getElementById('ca-watch') || document.getElementById('ca-unwatch'); if (!watch) { return; } watch.parentNode.insertBefore(li, watch); }, /* create the sidebar */ createSidebar: function() { var div = document.createElement("div"); div.id = "p-irset"; div.className = "portal"; var heading = document.createElement("h5"); heading.innerHTML = "Tools"; div.appendChild(heading); var body = document.createElement("div"); body.className = "body"; div.appendChild(body); var ul = document.createElement("ul"); body.appendChild(ul); var addedSomething = false; for (var i in IRSet.sidebarElements) { var item = IRSet.sidebarElements[i]; var li = document.createElement("li"); var addedItem = false; for (var j in item) { var link = item[j]; try { if (link[0]()) { var a = document.createElement("a"); a.textContent = link[1][0]; a.onclick = link[1][1]; a.style.cursor = "default"; li.appendChild(a); addedItem = true; addedSomething = true; } } catch (e) { } if (addedItem) { ul.appendChild(li); } } } var navi = document.getElementById('p-navigation'); if (!navi) { error("There seems to be no navigation ..."); } if (addedSomething) { navi.parentNode.insertBefore(div, navi); } }, /* add a SLA to the current page */ addSLA: function() { var defreason = "Kein Artikel"; var reason = prompt("SLA-Grund:", defreason); if (IRSet.trim(reason) != "") { if (IRSet.isEdit() || IRSet.isSubmit()) { IRSet.doSLA(reason); } else { IRSet.openEdit("irsla=1&irreason=" + escape(reason)); } } }, /* really add SLA */ doSLA: function(reason) { if (!document.getElementById("wpTextbox1").value.match(/{{(Löschen|SLA)\|.+?}}/) && document.getElementById("wpTextbox1").value != "") { IRSet.insertAtBegin("{{Löschen|1=''" + IRSet.trim(reason) + " --~~~~''}}\n\n", "SLA: " + IRSet.trim(reason), true); } }, /* open the Logbuch special page */ specialLog: function() { var url = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=Spezial:Logbuch&page=" + escape(wgPageName); window.location = url; }, /* insert the given string at the beginning of the page */ insertAtBegin: function(code, summary, save) { if (IRSet.isEdit() || IRSet.isSubmit()) { var textbox = document.getElementById("wpTextbox1"); var value = textbox.value; var newvalue = code + value; textbox.value = newvalue; document.getElementById("wpSummary").value = summary; if (save) { document.getElementById("wpSave").click(); } } } } $(IRSet.init); //