MediaWiki:UploadForm.js
Z Profiles
Poznámka: Po zveřejnění musíte vyprázdnit cache vašeho prohlížeče, jinak změny neuvidíte.
- Firefox / Safari: Při kliknutí na Aktualizovat držte Shift nebo stiskněte Ctrl-F5 nebo Ctrl-R (na Macu ⌘-R)
- Google Chrome: Stiskněte Ctrl-Shift-R (na Macu ⌘-Shift-R)
- Internet Explorer / Edge: Při kliknutí na Aktualizovat držte Ctrl nebo stiskněte Ctrl-F5
- Opera: Stiskněte Ctrl-F5.
/**
* Změna formuláře pro upload souborů
*
* @file Úprava formuláře pro upload souborů na Wiki
* @license https://www.gnu.org/licenses/gpl.html GNU General Public License 3.0
*/
var uploadForm = {
/**
* Popisky polí a nápověda
*/
// Pole "Popis"
popis: "Popis:",
napoveda_popis: "",
// Pole "Zdroj"
// popisek by měl informovat o možnosti Vlastní dílo
zdroj: "Zdroj:",
napoveda_zdroj: "Uveďte zdroj, ze kterého jste soubor získali. Nejlépe zadejte internetovou stránku či citaci knihy. Pakliže je soubor vaším dílem, zatrhněte možnost Vlastní dílo (jako výchozí licence bude nastavena CC-BY-SA 4.0).",
popisek_zatr_zdroj: "Vlastní dílo: ",
// Pole "Autor"
autor: "Autor:",
napoveda_autor: "",
// Pole "Datum"
// popisek by měl informovat o možnosti Dnešní datum
datum: "Datum:",
napoveda_datum: "Doporučujeme uvést datum ve formátu RRRR-MM-DD, případně RRRR-MM nebo RRRR. Pro vložení dnešního data zatrhněte možnost Dnešní datum.",
popisek_zatr_datum: "Dnešní datum:",
// Pole licence je generováno kódem MediaWiki
// Pole "Kategorie"
kategorie: "Kategorie:",
napoveda_kategorie: "Zde uveďte kategorie, do kterých lze váš soubor zařadit, oddělené čárkou.<br />Odkaz na seznam kategorií (otevírá se v novém okně):" + ' <a href="' + mw.config.get("wgServer") + mw.config.get("wgArticlePath").replace("$1", "Kategorie:Kategorie") + '" target="_blank">Seznam kategorií</a>',
/**
* Chybová hláška v případě nezadání parametru.
*
* @param {parametr} Chybějící parametr souboru.
*
* @return {boolean} False v případě chybějícího parametru.
*/
nezadanyParametr: function(parametr) {
window.alert("Nebyl zadán " + parametr + " souboru.\nDoplňte prosím chybějící informaci a odešlete soubor znovu.");
return false;
},
/**
* Vyplnění polí v případě zatrhnutí vlastní práce.
*
* @param {formular} Odkaz na formulář předaný předešlou funkcí.
*/
vlastniPrace: function(formular) {
if (formular.elements["vlastniprace"].checked === true) {
formular.elements["mySource"].value = "{{vlastní dílo}}";
formular.elements["mySource"].disabled = true;
formular.elements["myAuthor"].value = "[[Uživatel:" + mw.config.get("wgUserName") + "|" + mw.config.get("wgUserName") + "]]";
formular.elements["myAuthor"].disabled = true;
// licence: předvolení licence "CC-BY-SA"
zvolenaLicence = formular.elements["wpLicense"].selectedIndex;
formular.elements["wpLicense"].selectedIndex = 1;
} else {
formular.elements["mySource"].disabled = false;
formular.elements["myAuthor"].disabled = false;
formular.elements["wpLicense"].selectedIndex = zvolenaLicence;
}
},
/**
* Vyplnění pole dnešního data.
*
* @param {formular} Odkaz na formulář předaný předešlou funkcí.
*/
dnesniDatum: function(formular) {
if (formular.elements["dnesnidatum"].checked === true) {
// datum
dnesni_datum = new Date();
// rok
vyplneni_rok = dnesni_datum.getFullYear();
// měsíc
vyplneni_mesic = (dnesni_datum.getMonth() + 1);
if (vyplneni_mesic < 10) vyplneni_mesic = "0" + vyplneni_mesic;
// den
vyplneni_den = dnesni_datum.getDate();
if (vyplneni_den < 10) vyplneni_den = "0" + vyplneni_den;
// kompletní datum
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;
}
},
/**
* Odeslání formuláře.
*
* @param {formular} Odkaz na formulář předaný předešlou funkcí.
*/
odeslatFormular: function(formular) {
// proměnné čtené z formuláře, test zadání
mujPopis = formular.elements['myDesc'].value;
if (!mujPopis) { uploadForm.nezadanyParametr("popis"); return false; }
mujZdroj = formular.elements['mySource'].value;
if (!mujZdroj) { uploadForm.nezadanyParametr("zdroj"); return false; }
mujDatum = formular.elements['myDate'].value;
mujAutor = formular.elements['myAuthor'].value;
if (!mujAutor) { uploadForm.nezadanyParametr("autor"); return false; }
mujKategorie = formular.elements['myCategory'].value;
if (!mujKategorie) mujKategorie="Nezařazené soubory";
// 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 = "{{" + mediaLicence + "}}";
} else {
mujLicence = "{{bez licence}}";
testLicence = window.confirm("Nezadali jste žádnou licenci.\n\nPokud vám žádná z nabízených možností nevyhovuje, doplňte prosím licenci ručně po načtení souboru.\nPokud si s licencemi nevíte rady, klidně pokračujte dále a po načtení souboru prosím kontaktujte některého z redaktorů. Rádi vám pomůžeme.\n\nOpravdu chcete na tuto Wiki nahrát soubor bez licence?");
if(!testLicence) return false;
}
// vymazání oficiální sekce s licencemi při odeslání souboru
formular.elements['wpLicense'].options[formular.elements['wpLicense'].selectedIndex].value = "";
// úprava kategorií
mujKategorieSplit = mujKategorie.split(",");
mujKategorie="";
for(i=0;i<mujKategorieSplit.length;i++) {
mujKategorie += "[[Kategorie:" + mujKategorieSplit[i].trim() + "]]\n";
}
// přidání souboru do kategorie podle typu souboru
if (mujKategorie.search(/Obrázky|Flashové animace|Zvuky|Textové soubory|Komprimované archivy|Videa|Prezentace|Tabulky/) === -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":
case "ai":
case "psd":
mujKategorie += "[[Kategorie:Obrázky]]\n";
break;
case "swf":
case "xap":
mujKategorie += "[[Kategorie:Flashové animace]]\n";
break;
case "mp3":
case "ogg":
case "oga":
mujKategorie += "[[Kategorie:Zvuky]]\n";
break;
case "pdf":
case "doc":
case "docx":
mujKategorie += "[[Kategorie:Textové soubory]]\n";
break;
case "zip":
mujKategorie += "[[Kategorie:Komprimované archivy]]\n";
break;
case "ogg":
case "mp4":
mujKategorie += "[[Kategorie:Videa]]\n";
break;
case "ppt":
case "pptx":
mujKategorie += "[[Kategorie:Prezentace]]\n";
break;
case "xls":
case "xlsx":
mujKategorie += "[[Kategorie:Tabulky]]\n";
break;
}
}
// začlenění údajů do šablony Soubor
formular_popis = "{{Soubor\n|popis = ";
formular_popis += mujPopis;
formular_popis += "\n|zdroj = ";
formular_popis += mujZdroj;
formular_popis += "\n|datum = ";
formular_popis += mujDatum;
formular_popis += "\n|autor = ";
formular_popis += mujAutor;
formular_popis += "\n|licence = ";
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)
var tlacitkoOdeslat = document.getElementsByName("wpUpload")[0];
tlacitkoOdeslat.click();
return false;
},
/**
* Vytvoření nového řádku
*
* @param {jmeno} Label formulářového pole.
* @param {id} ID formulářového pole.
* @param {napoveda} Nápověda k formulářovému poli.
* @param {pop_checkbox} Popis checkboxu.
* @param {nabidka_checkboxu} ID checkboxu.
* @param {funkce_checkboxu} Odkaz na javascriptovou funkci, kterou vyvolá kliknutí do checkboxu.
*/
vytvoritRadek: function(jmeno, id, napoveda, pop_checkbox, nabidka_checkboxu, funkce_checkboxu) {
// základ nového řádku
novyradek = '<tr><td class="mw-label"><label for="' + id + '">' + jmeno + '</label></td><td class="mw-input"><input type="text" id="' + id + '" name="' + id + '" size="60" class="mw-input" onblur="this.value = this.value.trim();" />';
// checkbox
if (nabidka_checkboxu && funkce_checkboxu) {
novyradek += '<br /><label for="' + nabidka_checkboxu + '">' + pop_checkbox + '</label><input type="checkbox" name="' + nabidka_checkboxu + '" id="' + nabidka_checkboxu + '" onclick="uploadForm.' + funkce_checkboxu + '(document.forms[\'mw-upload-form\']);" />';
}
// nápověda
if (napoveda || napoveda !== " ") {
novyradek += '<div class="htmlform-tip">' + napoveda + '</div>';
}
// konec řádku
novyradek+="</td></tr>";
// vložit řádek do formuláře
$(".mw-htmlform-field-Licenses").before(novyradek);
},
/**
* Změna formuláře - startovací funkce
*/
start: function() {
// jestli nejsem na Upload, zastavit
if(mw.config.get("wgPageName") !== "Speciální:Načíst_soubor" && mw.config.get("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(!mw.config.get("wgUserName")) return;
// pokud načítám novou verzi souboru, nespouštět funkci
wpReUpload = mw.util.getParamValue('wpForReUpload'); // zjistí get parametr z url adresy
if(wpReUpload !== null) return;
// pokud je již zobrazena chyba, nespouštět funkci
if($(".error").length > 0) 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 (mw.config.get("wgUploadSourceIds").length === 0) {
tabulka.deleteRow(4);
tabulka.deleteRow(3);
return false;
}
}
// schovat tlačítko submit
$('input[name="wpUpload"]').css({"visibility":"hidden", "position":"absolute"});
// schovat řádek s původním polem "Popis:"
$(".mw-htmlform-field-HTMLTextAreaField").css({"visibility":"hidden", "position":"absolute"})
// úplně smazat řádek s Edittools
$(".mw-editTools").hide();
// vložit nový řádek: popis obrázku
uploadForm.vytvoritRadek(uploadForm.popis, "myDesc", uploadForm.napoveda_popis);
// vložit nový řádek: zdroj
uploadForm.vytvoritRadek(uploadForm.zdroj, "mySource", uploadForm.napoveda_zdroj, uploadForm.popisek_zatr_zdroj, "vlastniprace", "vlastniPrace");
// vložit nový řádek: autor
uploadForm.vytvoritRadek(uploadForm.autor, "myAuthor", uploadForm.napoveda_autor);
// vložit nový řádek: datum
uploadForm.vytvoritRadek(uploadForm.datum, "myDate", uploadForm.napoveda_datum, uploadForm.popisek_zatr_datum, "dnesnidatum", "dnesniDatum");
// vložit nový řádek: kategorie
uploadForm.vytvoritRadek(uploadForm.kategorie, "myCategory", uploadForm.napoveda_kategorie);
// vložit nový řádek: tlačítko pro odeslání
$('table#mw-htmlform-options tr:last').after('<tr><td></td><td><button onclick="return uploadForm.odeslatFormular(document.forms[\'mw-upload-form\']);">Načíst soubor</button></td></tr>');
}
}
/**
* Spustit to!
*/
$(uploadForm.start());