MediaWiki:UploadForm.js

/* */

/* ============ UPLOAD FILE FORM =============== author:   Petr Kajzar User:Slepi date:     02/2009, last update 09/2010 version:  MW 1.16 =============================================

// 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 ZOBRAZUJÍCÍ CHYBOVOU HLÁŠKU // nevyplnil-li některé důležité pole function nezadanyParametr(parametr) { window.alert("You did not enter a "+parametr+" of the file! Please, fill in missing information."); return false; }

// 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 = "";

// zvolená licence pro případ odškrtnutí volby "Vlastní dílo" var zvolenaLicence = 0;

// 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; // licence: předvolení licence "CC-BY CZ" zvolenaLicence = formular.elements["wpLicense"].selectedIndex; formular.elements["wpLicense"].selectedIndex = 9; licenseSelectorCheck; } else { formular.elements["mySource"].disabled = false; formular.elements["myAuthor"].disabled = false; formular.elements["wpLicense"].selectedIndex = zvolenaLicence; licenseSelectorCheck; } }

// 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 = ""; testLicence = window.confirm("You did not enter any license of the file.\n\nIf you want to save file under another license, please, enter the license after file upload.\n\nIf you are not sure abou the licenses, please, contact our editorial board (info@wikilectures.eu).\n\nDo you really want to save this file without licese?"); if(!testLicence) return false; } formular.elements['wpLicense'].options[formular.elements['wpLicense'].selectedIndex].value = ""; // Category check mujKategorieSplit=mujKategorie.split(","); mujKategorie=""; for(i=0;i<mujKategorieSplit.length;i++) { mujKategorie += "\n"; } // added category according to its mime type if (mujKategorie.indexOf("Images") == -1 && mujKategorie.indexOf("Flash animations") == -1 && mujKategorie.indexOf("Sounds") == -1 && mujKategorie.indexOf("text files") == -1 && mujKategorie.indexOf("Compiled archives") == -1) { nazevSouboru = formular.elements["wpDestFile"].value.split("."); switch(nazevSouboru[nazevSouboru.length-1].toLowerCase) { case "png": case "gif": case "jpg": case "jpeg": case "djvu": case "svg": mujKategorie += "\n"; break; case "swf": mujKategorie += "\n"; break; case "mp3": case "ogg": mujKategorie += "\n"; break; case "pdf": mujKategorie += "\n"; break; case "zip": mujKategorie += "\n"; break; } }

//template File with input text 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; }

// FUNKCE ZÍSKÁVAJÍCÍ GET PROMĚNNÉ Z URL ADRESY // zdroj: 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 + "_1 = radek_" + jmeno + ".insertCell(1);"); eval("radek_" + jmeno + "_0.className = 'mw-label';"); 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';");

// kontrola vstupu: zamezení prázdných znaků okolo textu: eval(jmeno + "_pole.onblur = function{this.value = trim(this.value);};");

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 = 'htmlform-tip';" + 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 {

// jestli nejsem na Upload, zastavit if(wgPageName != "Speciální:Načíst_soubor" && wgPageName!="Special:Upload") return false;

// 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 souboru, nespouštět funkci wpReUpload = getUrlVars; if(wpReUpload['wpForReUpload']) return;

// odkaz na formulář if(document.forms["mw-upload-form"]) formular = document.forms["mw-upload-form"];

// odkaz na tabulku s formulářem v proměnné "tabulka" if(document.getElementById("mw-htmlform-description")) tabulka = document.getElementById("mw-htmlform-description");

// pokud existuje smazaná verze souboru a je již zobrazeno varování, nespouštět // a nezobrazovat pole s licencí a edittools if (wgUploadSourceIds.length == 0) { tabulka.deleteRow(4); tabulka.deleteRow(3); return false; }

// 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.rows[2].id = "schovanyRadekPopis"; schovat("schovanyRadekPopis");

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

// 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", "6");

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í tabulkaProTlacitka = document.getElementById("mw-htmlform-options"); radek_submit = tabulkaProTlacitka.insertRow(2); radek_submit_0 = radek_submit.insertCell(0); radek_submit_1 = radek_submit.insertCell(1); radek_submit_1.className = "mw-input";

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 addOnloadHook(zmenitFormular);

/* */