MediaWiki:UploadForm.js

/* */

/* ============ UPLOAD FILE FORM =============== author:   Petr Kajzar User:Slepi date:     02/2009, last update 04/2009 license:  Wikilectures (wikien.lf1.cuni.cz) =============================================

// POPISKY A NÁPOVĚDY K JEDNOTLIVÝM POLÍM // ZDE MŮŽETE JEDNODUŠE UPRAVOVAT TEXTY FORMULÁŘE

// Pole "Popis" var popisek_popis = "Description:"; var napoveda_popis = "";

// Pole "Zdroj" // popisek by měl informovat o možnosti Vlastní dílo var popisek_zdroj = "Source:"; var napoveda_zdroj = "Please enter the source of the file. If the file is your own work, please check My own work."; var popisek_zatr_zdroj = "Own work:";

// Pole "Autor" var popisek_autor = "Author:"; var napoveda_autor = "";

// Pole "Datum" // popisek by měl informovat o možnosti Dnešní datum var popisek_datum = "Date:"; var napoveda_datum = "We recommend write the date in YYYY-MM-DD or YYYY-MM or YYYY. Or you can check the box Today."; var popisek_zatr_datum = "Today:";

// Pole licence je generováno kódem MediaWiki

// Pole "Kategorie" var popisek_kategorie = "Categories:"; var napoveda_kategorie = "Enter categories, which are suitable for your file, and split them by a comma ."; var popis_odkazu_kategorii = "Link to categories list (open in new window):"; var odkaz_seznam_kategorii = "Category:Categories";

/* ==== VLASTNÍ KÓD SKRIPTU - prosím neupravujte, nejste-li si jistí jeho funkcí ==== */

// FUNKCE SCHOVÁVAJÍCÍ DANÝ ELEMENT PODLE ID function schovat(id) { schovanyElement = document.getElementById(id); schovanyElement.style.visibility = "hidden"; schovanyElement.style.position = "absolute"; }

// FUNKCE VRACEJÍCÍ UŽIVATELE ZPĚT // nevyplnil-li některé důležité pole function nezadanyParametr(parametr) { window.alert("You did not enter a "+parametr+" of the file!"); }

// OBECNÉ PROMĚNNÉ POUŽÍVANÉ V CELÉM KÓDU

// odesílací formulář - je definován ve funkci zmenitFormular var formular = "";

// tlačítko "Odeslat" - je definováno ve funkci zmenitFormular var tlacitkoOdeslat = "";

// FUNKCE VYPLŇUJÍCÍ POLE V PŘÍPADĚ VLASTNÍ PRÁCE function vlastniPraceFce { if (formular.elements["vlastniprace"].checked == true) { formular.elements["mySource"].value = ""; formular.elements["mySource"].disabled = true; formular.elements["myAuthor"].value = ""; formular.elements["myAuthor"].disabled = true; } else { formular.elements["mySource"].disabled = false; formular.elements["myAuthor"].disabled = false; } }

// FUNKCE VYPLŇUJÍCÍ POLE DATUM DNEŠNÍM DATEM function dnesniDatumFce { if (formular.elements["dnesnidatum"].checked == true) { dnesni_datum = new Date;

vyplneni_rok = dnesni_datum.getFullYear; vyplneni_mesic = (dnesni_datum.getMonth + 1); if (vyplneni_mesic < 10) vyplneni_mesic = "0" + vyplneni_mesic; vyplneni_den = dnesni_datum.getDate; if (vyplneni_den < 10) vyplneni_den = "0" + vyplneni_den; vyplneni_data = vyplneni_rok + "-" + vyplneni_mesic + "-" + vyplneni_den;

formular.elements["myDate"].value = vyplneni_data; formular.elements["myDate"].disabled = true;

} else { formular.elements["myDate"].disabled = false; } }

// FUNKCE ODESÍLAJÍCÍ FORMULÁŘ // při uploadu souboru function odeslatFormular {

// proměnné čtené z formuláře, test zadání mujPopis = formular.elements['myDesc'].value; if (!mujPopis) {nezadanyParametr("description"); return false;} mujZdroj = formular.elements['mySource'].value; if (!mujZdroj) {nezadanyParametr("source"); return false;} mujDatum = formular.elements['myDate'].value; mujAutor = formular.elements['myAuthor'].value; if (!mujAutor) {nezadanyParametr("author"); return false;} mujKategorie = formular.elements['myCategory'].value; if (!mujKategorie) mujKategorie="Uncategorized files";

// kejkle s licencemi - načíst do šablony a smazat z MediaWiki pole MediaLicence = formular.elements['wpLicense'].options[formular.elements['wpLicense'].selectedIndex].value; if (MediaLicence) { mujLicence = ""; } else { mujLicence = ""; } formular.elements['wpLicense'].options[formular.elements['wpLicense'].selectedIndex].value = "";

// Úprava kategorií mujKategorieSplit=mujKategorie.split(","); mujKategorie=""; for(i=0;i<mujKategorieSplit.length;i++) { mujKategorie += "\n"; }

// začlenění údajů do šablony Soubor formular_popis = "\n"; formular_popis += mujKategorie;

// vložení šablony Soubor zpět do formuláře document.getElementById("wpUploadDescription").value = formular_popis;

// odeslání (simulace kliku na ODESLAT) puvodniSubmity = document.getElementsByName("wpUpload"); var tlacitkoOdeslat = puvodniSubmity[0]; tlacitkoOdeslat.click;

return false; }

// Read a page's GET URL variables and return them as an associative array. // source: http://snipplr.com/view.php?codeview&id=799

function getUrlVars { var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; }

// FUNKCE VYTVÁŘEJÍCÍ ŘÁDEK V TABULCE // s formulářovým políčkem, jeho popiskem a nápovědou, // případně checkboxem s onclick funkcí function vytvoritRadek (jmeno, id, cislo_radku, nabidka_checkboxu, funkce_checkboxu) {

eval("radek_" + jmeno + " = tabulka.insertRow(" + cislo_radku + ");"); eval("radek_" + jmeno + "_0 = radek_" + jmeno + ".insertCell(0);"); eval("radek_" + jmeno + "_0.style.textAlign = 'right';"); eval("radek_" + jmeno + "_0.style.verticalAlign = 'top';"); eval("radek_" + jmeno + "_1 = radek_" + jmeno + ".insertCell(1);"); eval("radek_" + jmeno + "_1.className = 'mw-input';");

eval(jmeno + "_label = document.createElement('label');"); eval("radek_" + jmeno + "_0.appendChild(" + jmeno + "_label);"); eval(jmeno + "_label.setAttribute('for', '" + id + "');"); eval(jmeno + "_label_text = document.createTextNode(popisek_" + jmeno + ");"); eval(jmeno + "_label.appendChild(" + jmeno + "_label_text);");

eval(jmeno + "_pole = document.createElement('input');"); eval(jmeno + "_pole.setAttribute('type', 'text');"); eval("radek_" + jmeno + "_1.appendChild(" + jmeno + "_pole);"); eval(jmeno + "_pole.setAttribute('id', '" + id + "');"); eval(jmeno + "_pole.setAttribute('name', '" + id + "');"); eval(jmeno + "_pole.setAttribute('size', '60');"); eval(jmeno + "_pole.className='mw-input';");

if (nabidka_checkboxu && funkce_checkboxu) {

eval("radek_" + jmeno + "_1.appendChild(document.createElement('br'));"); eval(jmeno + "_zatr_label = document.createElement('label');"); eval("radek_" + jmeno + "_1.appendChild(" + jmeno + "_zatr_label);"); eval(jmeno + "_zatr_label.setAttribute('for', '" + nabidka_checkboxu + "');"); eval(jmeno + "_zatr_label_text = document.createTextNode('- '+ popisek_zatr_" + jmeno + ");"); eval(jmeno + "_zatr_label.appendChild(" + jmeno + "_zatr_label_text);");

eval(jmeno + "_zatr = document.createElement('input');" +   jmeno + "_zatr.setAttribute('type', 'checkbox');" +    "radek_" + jmeno + "_1.appendChild(" + jmeno + "_zatr);" +    jmeno + "_zatr.setAttribute('name', '" + nabidka_checkboxu + "');" +    jmeno + "_zatr.setAttribute('id', '" + nabidka_checkboxu + "');" +    jmeno + "_zatr.onclick = " + funkce_checkboxu + ";") }

podminka_napoveda = "if (napoveda_" + jmeno + "|| napoveda_" + jmeno + "!= ' ') {" + jmeno + "_hint = document.createElement('div');" + "radek_" + jmeno + "_1.appendChild(" + jmeno + "_hint);" + jmeno + "_hint.className = 'prefsectiontip';" + jmeno + "_hint_text = document.createTextNode(napoveda_" + jmeno + ");" + jmeno + "_hint.appendChild(" + jmeno + "_hint_text);}"; eval(podminka_napoveda); }

// FUNKCE MĚNÍCÍ FORMULÁŘ // uploadu souboru function zmenitFormular {

// pokud nejsem na Special:Upload -> konec if (wgPageName != "Special:Upload") return;

// pokud jsem již na další stránce s varováním, nespouštět funkci if(document.getElementById("uploadwarning")) return;

// pokud nejsem přihlášený, nespouštět funkci if(!wgUserName) return;

// pokud načítám novou verzi, nespouštět funkci wpReUpload = getUrlVars; if(wpReUpload['wpReUpload']) return;

// odkaz na formulář formular = document.forms["upload"];

// skin - kompatibilita switch (skin) { case "monobook": case "chick": case "nostalgia": case "myskin": case "simple": tableindex = 0; break; case "cologneblue": case "standard": tableindex = 1; break; default: tableindex = 0; }

// odkaz na tabulku s formulářem v proměnné "tabulka" tabulka = document.getElementsByTagName("table"); tabulka = tabulka[tableindex];

//vložit fieldset novyfieldset = document.createElement("fieldset"); formular.appendChild(novyfieldset); novylegend = document.createElement("legend"); novylegend.appendChild(document.createTextNode("Upload file")); novyfieldset.appendChild(novylegend); novyfieldset.appendChild(tabulka);

// schovat tlačítko submit puvodniSubmity = document.getElementsByName("wpUpload"); var tlacitkoOdeslat = puvodniSubmity[0]; tlacitkoOdeslat.setAttribute("id", "idOdesilaciTlacitko"); schovat("idOdesilaciTlacitko");

// úplně smazat řádek s původním polem "Popis:" tabulka.deleteRow(2);

// úplně smazat řádek s Edittools tabulka.deleteRow(7);

// vložit nový řádek: popis obrázku vytvoritRadek("popis", "myDesc", "2");

// vložit nový řádek: zdroj vytvoritRadek("zdroj", "mySource", "3", "vlastniprace", "vlastniPraceFce");

// vložit nový řádek: autor vytvoritRadek("autor", "myAuthor", "4");

// vložit nový řádek: datum vytvoritRadek("datum", "myDate", "5", "dnesnidatum", "dnesniDatumFce");

// vložit nový řádek: kategorie vytvoritRadek("kategorie", "myCategory", "7");

if (napoveda_kategorie || napoveda_kategorie != " ") { komplethelp_kategorie = napoveda_kategorie; if (popis_odkazu_kategorii && odkaz_seznam_kategorii) { komplethelp_kategorie += ' ' + popis_odkazu_kategorii; preodkaz_seznam = wgServer + wgArticlePath; odkaz_seznam_kategorii = preodkaz_seznam.replace("$1", odkaz_seznam_kategorii); komplethelp_kategorie += ' '; komplethelp_kategorie += 'List of categories.'; }   kategorie_hint.innerHTML = komplethelp_kategorie; }

// vložit nový řádek: tlačítko pro odeslání radek_submit = tabulka.insertRow(9); radek_submit_0 = radek_submit.insertCell(0); radek_submit_0.style.textAlign = "right"; radek_submit_1 = radek_submit.insertCell(1); radek_submit_1.className = "mw-input";

submit_pole = document.createElement("textarea"); radek_submit_0.appendChild(submit_pole); submit_pole.setAttribute("id", "wpUploadDescription"); submit_pole.setAttribute("name", "wpUploadDescription"); submit_pole.setAttribute("cols", "60"); submit_pole.setAttribute("rows", "6"); submit_pole.className="mw-input"; schovat("wpUploadDescription");

submit_tlacitko = document.createElement("button"); radek_submit_1.appendChild(submit_tlacitko); submit_tlacitko_text = document.createTextNode("Upload file"); submit_tlacitko.appendChild(submit_tlacitko_text); submit_tlacitko.onclick = function {return odeslatFormular;}; }

// Spustit změnu formuláře addOnloadHook(zmenitFormular);

/* */