Корисник:MikyM/AvertissementImage.js
Изглед
Напомена: Пошто објавите измене, можда ћете морати да обришете кеш меморију прегледача како бисте их видели. Google Chrome, Firefox, Microsoft Edge и Safari: Држите ⇧ Shift и кликните дугме Reload на траци са алаткама. За детаље и упутства о другим прегледачима, погледајте en:Wikipedia:Bypass your cache.
/**
* Facilite la maintenance des images ; notamment l'avertissement des utilisateurs.
*
* @todo créer un bandeau unique pour les avertissements de discussion
* @todo bouton pour prévenir automatiquement les utilisateurs
* {{Projet:JavaScript/Script|AvertissementImage}}
* Codé par Bayo, version corrigée par Marin M.
*/
/** change the text edited according to a param in the URL
*/
function patchImageWarningDescription() {
/** extract a waring param from url, else return null
*/
function getWarningParam() {
var params = document.URL.split('?')
if (params[1] == undefined) return null
params = params[1].split('&')
for (var i in params) {
param = params[i]
if (param.substring(0, 13) != 'imageWarning=') continue
return param.substring(13)
}
return null
}
/** update parent var "text" and "comment" accordint to params
*/
function patchText(flaglist, flag, addTemplate, removeTemplate) {
var addit = flaglist.search(flag) != -1
if (addit) {
if (text.search(removeTemplate) == -1) {
text += "\n{{subst:" + addTemplate + "}}"
if (comment != "") comment += " ; "
comment += "ajout de " + addTemplate
}
} else {
if (text.search(removeTemplate) != -1) {
text = text.replace(removeTemplate, "")
if (comment != "") comment += " ; "
comment += "retrait de " + addTemplate
}
}
return text
}
// get the base
var comment = ""
var text = document.getElementById('wpTextbox1').value
// compute new description
var warning = getWarningParam()
if (warning == null) return
patchText(warning, 's', "nsd", /\{\{[Ss]ource inconnue.*\}\}/)
patchText(warning, 'l', "nld", /\{\{[Ll]icence inconnue.*\}\}/)
patchText(warning, 'p', "npd", /\{\{[Pp]ermission inconnue.*\}\}/)
// update the document
document.getElementById('wpTextbox1').value = text
document.getElementById('wpSummary').setAttribute("value", comment)
// save the document
document.getElementById('wpSave').click()
}
function onPushImageWarningUpdateButton() {
var edit = document.getElementById("ca-edit")
if(skin == 'vector') {
var url = edit.firstChild.firstChild.getAttribute("href");
} else {
var url = edit.firstChild.getAttribute("href");
}
url += "&imageWarning="
if (document.getElementById("checkboxSource").checked == true) url += "s"
if (document.getElementById("checkboxLicense").checked == true) url += "l"
if (document.getElementById("checkboxPermission").checked == true) url += "p"
document.location = url
}
function addImageWarningButtonPanel() {
if (document.getElementById("isOnCommons")) {
return; // image isOnCommons, we can't patch it here
}
var panel = document.createElement('DIV');
panel.setAttribute("style", "margin:0 auto 0 auto; background-color:#F0F0F0; border:1px solid #808080; padding:5px; text-align:left;");
function createProblemCheck(id, label, idwarning) {
var checked = document.getElementById(idwarning) != null;
var button = document.createElement('INPUT')
button.setAttribute("type", "checkbox")
button.setAttribute("id", id)
if (checked) {
button.setAttribute("checked", "checked")
}
panel.appendChild(button)
panel.appendChild(document.createTextNode(" "))
var text = document.createElement('LABEL')
text.setAttribute("for", id)
text.appendChild(document.createTextNode(label))
panel.appendChild(text)
panel.appendChild(document.createTextNode(" "))
}
createProblemCheck("checkboxSource", "Pas de source", "bandeau-source-inconnue")
createProblemCheck("checkboxLicense", "Pas de licence", "bandeau-licence-inconnue")
createProblemCheck("checkboxPermission", "Pas de permission", "bandeau-permission-inconnue")
var button = document.createElement('INPUT')
button.setAttribute("type", "button")
button.setAttribute("onClick", "onPushImageWarningUpdateButton()")
button.setAttribute("value", "Mettre à jour les avertissements")
//button.setAttribute("disabled", "disabled")
panel.appendChild(button)
var prev = document.getElementById('filetoc')
prev.parentNode.insertBefore(panel, prev);
}
function addCopyPasteImageWarningPanel() {
var source = document.getElementById('bandeau-source-inconnue') != null;
var licence = document.getElementById('bandeau-licence-inconnue') != null;
var permission = document.getElementById('bandeau-permission-inconnue') != null;
if (!source && !licence && !permission) return;
var panel = document.createElement('DIV');
panel.setAttribute("style", "margin:0 auto 0 auto; background-color:#FFE5E5; border:1px solid #FF6060; padding:5px; text-align:left;");
if (source) {
var text = "{"+"{subst:Avertissement source inconnue|" + wgPageName + "}} ~~"+"~~"
panel.appendChild(document.createTextNode(text))
}
if (licence) {
if (source) panel.appendChild(document.createElement('BR'))
var text = "{"+"{subst:Avertissement licence inconnue|" + wgPageName + "}} ~~"+"~~"
panel.appendChild(document.createTextNode(text))
}
if (permission) {
if (source || licence) panel.appendChild(document.createElement('BR'))
var text = "{"+"{subst:Avertissement permission inconnue|" + wgPageName + "}} ~~"+"~~"
panel.appendChild(document.createTextNode(text))
}
// bandeau unique
unique = "{" + "{subst:Avertissement image incomplète|image=" + wgPageName
if (source) unique += "|s=?"
if (licence) unique += "|l=?"
if (permission) unique += "|p=?"
unique += "}} ~~"+"~~"
panel.appendChild(document.createElement('HR'))
panel.appendChild(document.createTextNode(unique))
var prev = document.getElementById('filetoc')
prev.parentNode.insertBefore(panel, prev);
}
if (wgNamespaceNumber == 6) {
if (wgAction == "view") {
addOnloadHook(addCopyPasteImageWarningPanel);
addOnloadHook(addImageWarningButtonPanel);
} else if (wgAction == "edit") {
addOnloadHook(patchImageWarningDescription);
}
}