MediaWiki:EditControl.js

/* */

/* ============== Edit Control ========================== author:     Petr Kajzar User:Slepi date:       10/2009 description: script checks new user, whether he filled in               the Summary and used Preview, it checks changes and warns when leaving page ==========================================================

// FUNKCE KONTROLUJÍCÍ ZKUŠENOST UŽIVATELE A POUŽITÍ NÁHLEDU // spuštěna při načtení stránky function kontrolaNahledu {

// kontrola zkušenosti uživatele - příslušnost k autoconfirmed if (wgUserGroups) { userrights = wgUserGroups.toString; autoconfirmed = userrights.search("autoconfirmed"); } else { autoconfirmed = -1; }

// pokud je uživatel zkušený (autoconfirmed): ukončit kontrolu if (autoconfirmed != -1) return;

// není-li načteno editační pole: ukončit skript if (!document.forms["editform"]) return;

// kontrola použití tlačítka náhledu if (wgAction=="edit") { document.forms["editform"].elements["wpSave"].onclick = function {return zablokovat(true)}; } else if (document.forms["editform"]) { document.forms["editform"].elements["wpSave"].onclick = function {return zablokovat(false)}; } }

// FUNKCE KONTROLUJÍCÍ VYPLNĚNÍ SHRNUTÍ A GENERUJÍCÍ CHYBOVOU HLÁŠKU // volána funkcí kontrolaNahledu function zablokovat(edit) {

// kontrola vyplnění shrnutí editace if(document.getElementById("wpSummary")) { wpsummary = document.getElementById("wpSummary").value; if (wpsummary == "") summary = false; } else { wpsummary = true; }

// chybová hláška if (edit || !wpsummary) { i = 1; text_potvrzeni = ""; if (!wpsummary) {text_potvrzeni += i + ". You did not filled in the Summary.\n"; i++} if (edit) text_potvrzeni += i + ". You did not check your edit by clicking the Preview button.\n"; text_potvrzeni += "\nDo you still want to save your editation?"; if (edit) text_potvrzeni += '\n(click on "Cancel" to preview)'; potvrzeni = window.confirm(text_potvrzeni); } else {potvrzeni = true;}

// zobrazení náhledu, příp. odeslání editace na server if (!potvrzeni) { if (document.getElementById("wpPreview")) { if (edit) document.forms["editform"].elements["wpPreview"].click; }   return false; } else { window.onbeforeunload = null; return true; } }

// FUNKCE ZOBRAZUJÍCÍ UPOZORNĚNÍ PŘI OPOUŠTĚNÍ STRÁNKY function confirmLeaveEdit { window.onbeforeunload = function {return "Your changes have not been saved yet. If you leave this page, your edit will be lost.";}; }

// FUNKCE KONTROLUJÍCÍ ZMĚNY PŘI EDITACÍCH function leaveEdit { if ((wgAction == "edit") || (wgAction == "submit" && document.forms["editform"])) { document.forms["editform"].elements["wpTextbox1"].onchange = confirmLeaveEdit; document.forms["editform"].elements["wpSave"].onclick = function {window.onbeforeunload = null;}; document.forms["editform"].elements["wpPreview"].onclick = function {window.onbeforeunload = null;}; document.forms["editform"].elements["wpDiff"].onclick = function {window.onbeforeunload = null;}; document.forms["editform"].elements["wpSummary"].onkeypress = function {if (event.keyCode == 13) window.onbeforeunload = null;}; if(document.getElementById("toggle_wpTextbox1")) document.getElementById("toggle_wpTextbox1").onclick = function onclick{ToggleFCKEditor('toggle','wpTextbox1'); window.onbeforeunload = null;};

} }

// SPUSTIT KONTROLU PO NAČTENÍ STRÁNKY addOnloadPage(kontrolaNahledu); addOnloadHook(leaveEdit);

/* */