MediaWiki:UploadForm.js (upgrade)
From WikiLectures
/*
*/ /* ============ UPLOAD FILE FORM =============== author: Slepi [[User:Slepi]] date: 02/2009, last update 07/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 = "{{vlastní dílo}}"; 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("popis"); return false;} mujZdroj = formular.elements['mySource'].value; if (!mujZdroj) {nezadanyParametr("zdroj"); return false;} mujDatum = formular.elements['myDate'].value; mujAutor = formular.elements['myAuthor'].value; if (!mujAutor) {nezadanyParametr("autor"); 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 = "{{"; mujLicence += MediaLicence; mujLicence += "}}"; } else { mujLicence = "{{bez licence}}"; } formular.elements['wpLicense'].options[formular.elements['wpLicense'].selectedIndex].value = ""; // Úprava kategorií mujKategorieSplit=mujKategorie.split(","); mujKategorie=""; for(i=0;i<mujKategorieSplit.length;i++) { mujKategorie += "[[Category:"+mujKategorieSplit[i]+"]]\n"; } // začlenění údajů do šablony Soubor formular_popis = "{{File\n|description = "; formular_popis += mujPopis; formular_popis += "\n|source = "; formular_popis += mujZdroj; formular_popis += "\n|date = "; formular_popis += mujDatum; formular_popis += "\n|author = "; formular_popis += mujAutor; formular_popis += "\n|license = "; formular_popis += mujLicence; formular_popis += "\n}}\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';"); 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() { // jestli nejsem na Upload, zastavit if(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['wpReUpload']) return; // odkaz na formulář formular = document.forms["mw-upload-form"]; // odkaz na tabulku s formulářem v proměnné "tabulka" tabulka = document.getElementById("mw-upload-table"); // 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[3].id = "schovanyRadekPopis"; schovat("schovanyRadekPopis"); // úplně smazat řádek s Edittools tabulka.deleteRow(9); // vložit nový řádek: popis obrázku vytvoritRadek("popis", "myDesc", "3"); // vložit nový řádek: zdroj vytvoritRadek("zdroj", "mySource", "4", "vlastniprace", "vlastniPraceFce"); // vložit nový řádek: autor vytvoritRadek("autor", "myAuthor", "5"); // vložit nový řádek: datum vytvoritRadek("datum", "myDate", "6", "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 += '<br />' + popis_odkazu_kategorii; preodkaz_seznam = wgServer + wgArticlePath; odkaz_seznam_kategorii = preodkaz_seznam.replace("$1", odkaz_seznam_kategorii); komplethelp_kategorie += ' <a href="' + odkaz_seznam_kategorii + '" target="_blank">'; komplethelp_kategorie += 'Seznam kategorií</a>.'; } kategorie_hint.innerHTML = komplethelp_kategorie; } // vložit nový řádek: tlačítko pro odeslání radek_submit = tabulka.insertRow(10); 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); /*
*/