Utilisateur:Spartan.arbinger/chelper.js
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.// ------------------------------------------------------------------------
//
// CODEX TEST USERSCRIPT
//
// I can't think of anything to put as a description for now.
//
// ------------------------------------------------------------------------
//
// NOTE TO USERS AND DEBUGGERS: This userscript is originally written in
// Vue and TypeScript. The original code is converted to raw JavaScript
// in a build process. To view the original source code, visit
//
// https://gitlab.wikimedia.org/chlod/userscripts-template-codex
//
// ------------------------------------------------------------------------
//// <nowiki>
mw.loader.using(
["vue", "jquery", "@wikimedia/codex", "mediawiki.util"],
function (require) {
"use strict";
var H = Object.defineProperty,
D = Object.defineProperties;
var P = Object.getOwnPropertyDescriptors;
var V = Object.getOwnPropertySymbols;
var _ = Object.prototype.hasOwnProperty,
I = Object.prototype.propertyIsEnumerable;
var S = (t, a, s) =>
a in t
? H(t, a, {
enumerable: !0,
configurable: !0,
writable: !0,
value: s,
})
: (t[a] = s),
O = (t, a) => {
for (var s in a || (a = {})) _.call(a, s) && S(t, s, a[s]);
if (V) for (var s of V(a)) I.call(a, s) && S(t, s, a[s]);
return t;
},
q = (t, a) => D(t, P(a));
var x = (t, a, s) =>
new Promise((l, d) => {
var m = (N) => {
try {
E(s.next(N));
} catch (T) {
d(T);
}
},
f = (N) => {
try {
E(s.throw(N));
} catch (T) {
d(T);
}
},
E = (N) =>
N.done ? l(N.value) : Promise.resolve(N.value).then(m, f);
E((s = s.apply(t, a)).next());
});
const e = require("vue"),
R = require("@wikimedia/codex");
require("jquery");
const w = [
{
category: "Admissibilité",
display: "Admissibilité",
template: "{{Admissibilité}}",
help: "Attention, il faut à la suite de la pose de ce bandeau ouvrir manuellement la procédure de DDA. Suivez les explications qui apparaîtront sur le bandeau.",
},
{
category: "Admissibilité",
display: "Admissibilité à vérifier",
template:
"{{Admissibilité à vérifier|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}|motif=$(reason)}}",
reason: "Motif :",
help: "",
},
{
category: "Admissibilité",
display: "Article en sursis",
template:
"{{Article en sursis|timestamp={{subst:CURRENTTIMESTAMP}}}}",
help: "",
},
{
category: "Admissibilité",
display: "Notoriété art",
template:
"{{Notoriété art|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Admissibilité",
display: "Pour Wikiquote",
template: "{{Pour Wikiquote}}",
help: "",
},
{
category: "Admissibilité",
display: "Vérifiabilité",
template:
"{{Vérifiabilité|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Admissibilité",
display: "Vie privée",
template:
"{{Vie privée|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À catégoriser",
template:
"{{À catégoriser|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À dater",
template:
"{{À dater|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À déjargoniser",
template:
"{{À déjargoniser|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À délister",
template:
"{{À délister|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À désacadémiser",
template:
"{{À désacadémiser|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À désangliciser",
template:
"{{À désangliciser|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À fusionner",
template:
"{{À fusionner|$(extra)|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
extra: "Liste des articles à fusionner, séparés par des « | » :",
help: "",
},
{
category: "Mise en forme",
display: "À illustrer",
template:
"{{À illustrer|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À recycler",
template:
"{{À recycler|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À TeXifier",
template:
"{{À TeXifier|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "À wikifier",
template:
"{{À wikifier|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Alerte langue",
template: "{{Alerte langue|$(reason)|$(extra)}}",
extra:
"Nom de la langue, tel qu'utilisé dans l'article relatif à cette langue :",
reason:
"nom de la langue utilisée ainsi qu'au moins une lettre de cette langue qui pourrait poser des problèmes d'affichage :",
help: "",
},
{
category: "Mise en forme",
display: "Article court",
template: "{{Article court|$(extra)}}",
extra: "Article dans lequel le sujet est plus développé :",
help: "",
},
{
category: "Mise en forme",
display: "Article incompréhensible",
template:
"{{Article incompréhensible|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Article mal proportionné",
template: "{{Article mal proportionné}}",
help: "",
},
{
category: "Mise en forme",
display: "Av. J.-C.",
template: "{{Av. J.-C.}}",
help: "",
},
{
category: "Mise en forme",
display: "Avertissement liste wikidata",
template: "{{Avertissement liste wikidata}}",
help: "",
},
{
category: "Mise en forme",
display: "Confusion",
template: "{{Confusion|$(reason)}}",
reason:
"Lien(s) vers un ou plusieurs autres articles, séparés par des « | » :",
help: "",
},
{
category: "Mise en forme",
display: "En travaux",
template:
"{{En travaux|$(user)|date={{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}|commentaire=$(extra)}}",
extra: "Commentaire facultatif :",
help: "",
},
{
category: "Mise en forme",
display: "Fusion technique",
template: "{{Fusion technique|$(extra)}}",
extra:
"Liste des articles qui font l'objet de la fusion, sparés par des « | » :",
help: "",
},
{
category: "Mise en forme",
display: "Internationaliser",
template:
"{{Internationaliser|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Lire d'abord",
template: "{{Lire d'abord|$(extra)}}",
extra: "Liste des articles à lire d'abord, séparés par des « | » :",
help: "",
},
{
category: "Mise en forme",
display: "Orthographe",
template:
"{{Orthographe|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Plan",
template:
"{{Plan|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Plusieurs en cours",
template: "{{Plusieurs en cours}}",
help: "",
},
{
category: "Mise en forme",
display: "Redirect confusion",
template: "{{Redirect confusion|$(reason)|$(extra)}}",
extra: "Confusion possible avec l'article :",
reason: "Nom de la redirection :",
help: "",
},
{
category: "Mise en forme",
display: "Résumé introductif",
template:
"{{Résumé introductif|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Résumé introductif trop court",
template:
"{{Résumé introductif trop court|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Résumé introductif trop long",
template:
"{{Résumé introductif trop long|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Style non encyclopédique",
template:
"{{Style non encyclopédique|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Synopsis",
template:
"{{Synopsis|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Titre incorrect",
template: "{{Titre incorrect|1=$(reason)}}",
reason: "Titre souhaité :",
help: "",
},
{
category: "Mise en forme",
display: "Trop d'images",
template:
"{{Trop d'images|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Trop de citations",
template:
"{{Trop de citations|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Trop de liens",
template:
"{{Trop de liens|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Trop de wikiliens",
template:
"{{Trop de wikiliens|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Mise en forme",
display: "Trop long",
template: "{{Trop long}}",
help: "",
},
{
category: "Mise en forme",
display: "Typographie",
template:
"{{Typographie|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Neutralité",
display: "Anthropocentrisme",
template:
"{{Anthropocentrisme|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Neutralité",
display: "Article non neutre",
template:
"{{Article non neutre|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Neutralité",
display: "Avantage non déclaré",
template:
"{{Avantage non déclaré|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}|motif=$(reason)}}",
reason: "Motif :",
help: "",
},
{
category: "Neutralité",
display: "Désaccord de neutralité",
template:
"{{Désaccord de neutralité|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Neutralité",
display: "Désaccord de pertinence",
template:
"{{Désaccord de pertinence|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Neutralité",
display: "Introduction régionale",
template:
"{{Introduction régionale|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Neutralité",
display: "Point de vue interne",
template:
"{{Point de vue interne|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Neutralité",
display: "POV fork",
template: "{{POV fork}}",
help: "",
},
{
category: "Neutralité",
display: "Promotionnel",
template:
"{{Promotionnel|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Neutralité",
display: "R3R",
template: "{{R3R|1=~~~~}}",
help: "",
},
{
category: "Neutralité",
display: "Scrutin en cours",
template: "{{Scrutin en cours}}",
help: "",
},
{
category: "Sourçage",
display: "À sourcer",
template:
"{{À sourcer|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Sourçage",
display: "À vérifier",
template:
"{{À vérifier|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Sourçage",
display: "Conventions bibliographiques",
template:
"{{Conventions bibliographiques|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Sourçage",
display: "Copie à vérifier",
template:
"{{Copie à vérifier|1=$(reason)|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
reason: "Adresse du site copié :",
help: "",
},
{
category: "Sourçage",
display: "Détournement de sources",
template: "{{Détournement de sources}}",
help: "",
},
{
category: "Sourçage",
display: "Lien internet incomplet",
template: "{{Lien internet incomplet}}",
help: "",
},
{
category: "Sourçage",
display: "Mettre à jour",
template:
"{{Mettre à jour|$(reason)|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}|commentaire=$(extra)}}",
extra: "Justification de la présence du bandeau (facultatif) :",
reason: "Date de dernière mise à jour (facultatif) :",
help: "",
},
{
category: "Sourçage",
display: "Pas de liens externes",
template: "{{Pas de liens externes}}",
help: "",
},
{
category: "Sourçage",
display: "Sans source",
template:
"{{Sans source|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Sourçage",
display: "Sources à lier",
template:
"{{Sources à lier|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Sourçage",
display: "Sources obsolètes",
template:
"{{Sources obsolètes|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Sourçage",
display: "Sources secondaires",
template:
"{{Sources secondaires|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}",
help: "",
},
{
category: "Sourçage",
display: "Travail inédit",
template:
"{{Travail inédit|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}|Cet article peut contenir}}",
help: "",
},
],
L = (t) => w.find((a) => a.display === t),
j = { class: "bandeaux-manager" },
F = { class: "search-section" },
W = { key: 0, class: "selected-bandeaux" },
X = { class: "selection-list" },
z = { key: 0, class: "bandeau-group" },
J = { key: 0, class: "input-field" },
Q = { key: 1, class: "input-field" },
G = 5,
K = e.defineComponent({
__name: "BandeauxManager",
setup(t) {
const a = e.ref(!0),
s = e.ref(""),
l = e.ref([]),
d = e.ref({}),
m = e.ref({}),
f = e.computed(() => w.filter((o) => l.value.includes(o.display))),
E = e.computed(() => l.value.length < G),
N = e.computed(() => f.value.map((o) => o.display).join(", ")),
T = e.computed(() => {
const o = s.value.toLowerCase().trim();
return (
o
? w.filter(
(u) =>
u.display.toLowerCase().includes(o) ||
u.help.toLowerCase().includes(o)
)
: w
).reduce(
(u, C) => (
u[C.category] || (u[C.category] = []),
u[C.category].push(C),
u
),
{}
);
}),
v = (o) => l.value.includes(o),
U = (o) => {
var u;
const n = L(o);
return !(n != null && n.reason) ||
n.reason.toLowerCase().includes("facultatif") ||
((u = d.value[o]) != null && u.trim())
? "default"
: "error";
},
A = e.computed(() =>
f.value.length === 0
? !1
: f.value.every((o) => {
var n;
return !o.reason ||
o.reason.toLowerCase().includes("facultatif")
? !0
: (n = d.value[o.display]) == null
? void 0
: n.trim();
})
),
p = [
"admissibilité",
"à prouver",
"à sourcer",
"à vérifier",
"BPV à sourcer",
"contenu évasif",
"sans source",
"source douteuse",
"source obsolète",
"source unique",
"sources à lier",
"sources secondaires",
"trop de sources",
"vérifiabilité",
"à catégoriser",
"à dater",
"à décoloriser",
"à déjargoniser",
"à délister",
"à désacadémiser",
"à désangliciser",
"à TeXifier",
"à wikifier",
"biblio",
"orthographe",
"typographie",
"catalogue de vente",
"CV",
"hagiographique",
"dithyrambe",
"name dropping",
"pub",
"tribune",
"anthropocentrisme",
"controverses",
"détournement de sources",
"internationaliser",
"neutralité",
"non neutre",
"outre-mer",
"rédaction",
"titre non encyclopédique",
"ton journalistique",
"travail inédit",
"anecdotes",
"guide pratique",
"pertinence",
"sujet à identifier",
"trop de citations",
"vie privée",
"à recycler",
"contenu à préciser",
"divergence avec Wikidata",
"incompréhensible",
"intro",
"intro incompréhensible",
"intro non représentative",
"tableau incohérent",
"traduction à revoir",
"traduction incomplète",
"lien internet",
"orphelin",
"pas de liens externes",
"trop de liens",
"trop de wikiliens",
"intro courte",
"intro longue",
"mal proportionné",
"synthèse",
"trop long",
"à illustrer",
"image à légender",
"trop d'images",
"mettre à jour",
"contradiction",
"plan",
"POV fork",
"répétitions",
"utilisateur non sûr",
],
r = (o) =>
({
"pov fork": "POV fork",
cv: "CV",
"à texifier": "à TeXifier",
"divergence avec wikidata": "divergence avec Wikidata",
}[o.toLowerCase()] || o),
c = () => {
var C;
const o = [],
n = [];
f.value.forEach((i) => {
var k;
const g =
(k = i.template.match(/\{\{([^}|]+)/)) == null
? void 0
: k[1].toLowerCase().trim();
g !== void 0 &&
(p.map((Y) => Y.toLowerCase()).includes(g)
? o.push(
q(O({}, i), { problemeMultiple: !0, paramName: r(g) })
)
: n.push(i));
});
let u = "";
if (o.length > 1) {
u += `{{Problèmes multiples
`;
for (const i of o) {
const g =
(i.reason &&
((C = d.value[i.display]) == null ? void 0 : C.trim())) ||
"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}";
u += ` | ${i.paramName} = ${g}
`;
}
u += `}}
`;
} else o.length === 1 && n.push(o[0]);
return (
(u += n.map((i) => {
let g = i.template;
return (
i.reason &&
(g = g.replace("$(reason)", d.value[i.display] || "")),
i.extra &&
(g = g.replace("$(extra)", m.value[i.display] || "")),
g
);
}).join(`
`)),
u
);
},
y = () =>
x(this, null, function* () {
if (!A.value) return;
a.value = !1;
const o = c();
try {
yield new mw.Api().postWithToken("csrf", {
action: "edit",
title: mw.config.get("wgPageName"),
prependtext:
o +
`
`,
summary: "Ajout de bandeaux de maintenance via C-helper",
tags: "C-helper",
}),
mw.notify(
"Bandeau(x) ajouté(s), rechargement de la page...",
{ type: "success", tag: "c-helper" }
),
setTimeout(() => location.reload(), 2e3);
} catch (n) {
mw.notify("Erreur lors de l'ajout des bandeaux", {
type: "error",
tag: "c-helper",
});
}
}),
M = () => {
a.value = !1;
};
return (o, n) => (
e.openBlock(),
e.createBlock(
e.unref(R.CdxDialog),
{
open: a.value,
"onUpdate:open": n[2] || (n[2] = (u) => (a.value = u)),
title: "C-helper",
"primary-action": {
label: "Appliquer",
actionType: "progressive",
disabled: !A.value,
},
"default-action": { label: "Fermer" },
onPrimary: y,
onDefault: M,
},
{
default: e.withCtx(() => [
e.createElementVNode("div", j, [
e.createElementVNode("div", F, [
e.createVNode(
e.unref(R.CdxTextInput),
{
modelValue: s.value,
"onUpdate:modelValue":
n[0] || (n[0] = (u) => (s.value = u)),
placeholder: "Rechercher un bandeau...",
"clear-button": { label: "Effacer" },
class: "search-input",
},
null,
8,
["modelValue"]
),
]),
f.value.length > 0
? (e.openBlock(),
e.createElementBlock("div", W, [
e.createVNode(
e.unref(R.CdxMessage),
{ type: "notice" },
{
header: e.withCtx(() => [
e.createTextVNode(
" Bandeaux sélectionnés (" +
e.toDisplayString(f.value.length) +
") ",
1
),
]),
default: e.withCtx(() => [
e.createElementVNode(
"span",
X,
e.toDisplayString(N.value),
1
),
]),
_: 1,
}
),
]))
: e.createCommentVNode("", !0),
(e.openBlock(!0),
e.createElementBlock(
e.Fragment,
null,
e.renderList(
T.value,
(u, C) => (
e.openBlock(),
e.createElementBlock(
e.Fragment,
{ key: C },
[
u.length > 0
? (e.openBlock(),
e.createElementBlock("div", z, [
e.createVNode(
e.unref(R.CdxLabel),
{ class: "group-label" },
{
default: e.withCtx(() => [
e.createTextVNode(
e.toDisplayString(C) +
" (" +
e.toDisplayString(u.length) +
") ",
1
),
]),
_: 2,
},
1024
),
(e.openBlock(!0),
e.createElementBlock(
e.Fragment,
null,
e.renderList(
u,
(i) => (
e.openBlock(),
e.createElementBlock(
"div",
{
key: i.template,
class: "bandeau-item",
},
[
e.createVNode(
e.unref(R.CdxCheckbox),
{
modelValue: l.value,
"onUpdate:modelValue":
n[1] ||
(n[1] = (g) =>
(l.value = g)),
"input-value": i.display,
disabled:
!E.value && !v(i.display),
},
e.createSlots(
{
default: e.withCtx(() => [
e.createTextVNode(
e.toDisplayString(
i.display
) + " ",
1
),
]),
_: 2,
},
[
i.help
? {
name: "description",
fn: e.withCtx(() => [
e.createTextVNode(
e.toDisplayString(
i.help
),
1
),
]),
key: "0",
}
: void 0,
]
),
1032,
[
"modelValue",
"input-value",
"disabled",
]
),
v(i.display) && i.reason
? (e.openBlock(),
e.createElementBlock(
"div",
J,
[
e.createVNode(
e.unref(R.CdxField),
{
"label-icon": "info",
},
{
label: e.withCtx(
() => [
e.createTextVNode(
e.toDisplayString(
i.reason
),
1
),
]
),
default: e.withCtx(
() => [
e.createVNode(
e.unref(
R.CdxTextInput
),
{
modelValue:
d.value[
i.display
],
"onUpdate:modelValue":
(g) =>
(d.value[
i.display
] = g),
placeholder:
"Requis",
status: U(
i.display
),
},
null,
8,
[
"modelValue",
"onUpdate:modelValue",
"status",
]
),
]
),
_: 2,
},
1024
),
]
))
: e.createCommentVNode("", !0),
v(i.display) && i.extra
? (e.openBlock(),
e.createElementBlock(
"div",
Q,
[
e.createVNode(
e.unref(R.CdxField),
{
"label-icon": "info",
},
{
label: e.withCtx(
() => [
e.createTextVNode(
e.toDisplayString(
i.extra
),
1
),
]
),
default: e.withCtx(
() => [
e.createVNode(
e.unref(
R.CdxTextInput
),
{
modelValue:
m.value[
i.display
],
"onUpdate:modelValue":
(g) =>
(m.value[
i.display
] = g),
placeholder:
"Optionnel",
},
null,
8,
[
"modelValue",
"onUpdate:modelValue",
]
),
]
),
_: 2,
},
1024
),
]
))
: e.createCommentVNode("", !0),
]
)
)
),
128
)),
]))
: e.createCommentVNode("", !0),
],
64
)
)
),
128
)),
Object.keys(T.value).length === 0
? (e.openBlock(),
e.createBlock(
e.unref(R.CdxMessage),
{ key: 1, type: "notice" },
{
default: e.withCtx(
() =>
n[3] ||
(n[3] = [
e.createTextVNode(
" Aucun bandeau ne correspond à votre recherche "
),
])
),
_: 1,
}
))
: e.createCommentVNode("", !0),
]),
]),
_: 1,
},
8,
["open", "primary-action"]
)
);
},
}),
Z = [
{ display: "Souhaiter la bienvenue" },
{ display: "Maladresses" },
{ display: "Vandalisme" },
{ display: "Suggestion" },
{ display: "Liens externes" },
{ display: "Copyvio" },
{ display: "Avertissement supression" },
{ display: "Aide" },
],
$ = [
{
category: 0,
display: "Bienvenue nouveau",
template: "Bienvenue nouveau|$(user)|message=$(extra)",
extra: "Ajouter un message personnel (facultatif) :",
help: "",
required: [],
},
{
category: 0,
display: "Bienvenue IP",
template: "Bienvenue IP",
help: "",
required: [],
},
{
category: 0,
display: "Bienvenue IP méritante",
template: "Bienvenue IP méritante|$(user)|message=$(extra)",
extra: "Ajouter un message personnel (facultatif) :",
help: "",
required: [],
},
{
category: 1,
display: "Test 0",
template: "Test 0|$(page)|$(diff)|autre=$(extra)|user=$(user)",
extra: "Type de maladresse (facultatif) :",
help: "",
required: ["page"],
},
{
category: 1,
display: "Test ?",
template: "Test ?|$(page)|$(diff)",
help: "",
required: ["page"],
},
{
category: 1,
display: "Ajout POV",
template: "Ajout POV|$(page)|user=$(user)",
help: "",
required: ["page"],
},
{
category: 1,
display: "Non-encyclo",
template: "Non-encyclo|user=$(user)",
help: "",
required: [],
},
{
category: 1,
display: "Retrait injustifié",
template: "Retrait injustifié|$(page)|user=$(user)",
help: "",
required: ["page"],
},
{
category: 1,
display: "Ortho",
template: "Ortho|$(page)|user=$(user)",
help: "",
required: ["page"],
},
{
category: 2,
display: "Test 1",
template: "Test 1|$(page)",
help: "",
required: ["page"],
},
{
category: 2,
display: "Test 2",
template: "Test 2",
help: "",
required: [],
},
{
category: 2,
display: "Test 3",
template: "Test 3",
help: "",
required: [],
},
{
category: 2,
display: "Test 4",
template: "Test 4",
help: "",
required: [],
},
{
category: 3,
display: "Faut sourcer",
template: "Faut sourcer|$(page)|user=$(user)",
help: "",
required: ["page"],
},
{
category: 3,
display: "Faut sourcer 2",
template: "Faut sourcer 2|$(page)",
help: "",
required: ["page"],
},
{
category: 4,
display: "Bienvenue spammeur",
template: "Bienvenue spammeur|$(page)|user=$(user)",
help: "",
required: ["page"],
},
{
category: 4,
display: "Bienvenue spammeur 2",
template: "Bienvenue spammeur 2|$(page)",
help: "",
required: ["page"],
},
{
category: 5,
display: "Avertissement Copyvio",
template: "Avertissement Copyvio|$(page)|$(extra)",
extra: "Site copié (facultatif) :",
help: "",
required: ["page"],
},
{
category: 5,
display: "Avertissement Copyvio Synopsis",
template: "Avertissement Copyvio Synopsis|$(page)|$(extra)",
extra: "Site copié (facultatif) :",
help: "",
required: ["page"],
},
{
category: 6,
display: "BSI CAA",
template: "BSI CAA|$(page)",
help: "",
required: ["page"],
},
{
category: 6,
display: "BSI vandalisme",
template: "BSI vandalisme|$(page)",
help: "",
required: ["page"],
},
{
category: 7,
display: "Aide sources",
template: "Aide sources|user=$(user)",
help: "",
required: [],
},
{
category: 7,
display: "Aide images",
template: "Aide images|user=$(user)",
help: "",
required: [],
},
],
ee = e.defineComponent({
name: "UserMessageManager",
components: {
CdxCheckbox: R.CdxCheckbox,
CdxDialog: R.CdxDialog,
CdxLabel: R.CdxLabel,
CdxTextInput: R.CdxTextInput,
CdxRadio: R.CdxRadio,
CdxField: R.CdxField,
},
setup() {
const t = e.ref(!0),
a = e.ref(""),
s = e.ref(!0),
l = e.ref(""),
d = e.ref({}),
m = e.computed(() => $.find((p) => p.display === l.value)),
f = (p) => {
var r;
return (r = p.required) != null &&
r.includes("page") &&
l.value === p.display &&
!a.value
? "error"
: "default";
},
E = e.computed(() => {
var r;
if (!l.value) return !1;
const p = m.value;
return !(
!p ||
((r = p.required) != null && r.includes("page") && !a.value)
);
}),
N = e.computed(() =>
$.reduce((p, r) => {
const c = Z[r.category].display;
return p[c] || (p[c] = []), p[c].push(r), p;
}, {})
),
T = (p, r) =>
x(this, null, function* () {
try {
const c = yield new mw.Api().get({
action: "query",
prop: "revisions",
titles: p,
rvuser: r,
rvlimit: 1,
rvprop: "ids",
formatversion: 2,
});
if (!c.query.pages) throw new Error("Titre de page erroné");
const y = c.query.pages[0];
if (!y.revisions)
throw y.missing
? new Error("Page non trouvée")
: y.invalid
? new Error("Titre de page invalide")
: new Error("Révision non trouvée");
return String(y.revisions[0].revid);
} catch (c) {
return (
mw.notify(
`Erreur lors de la récupération de la révision : ${c}`,
{ type: "error" }
),
""
);
}
}),
v = () =>
x(this, null, function* () {
var n;
const p =
a.value || mw.config.get("wgPageName").replaceAll("_", " "),
r = document.querySelector(".diff")
? ((n = document.querySelector(
".diff-ntitle .mw-userlink"
)) == null
? void 0
: n.textContent) || ""
: mw.config.get("wgRelevantUserName") || "";
let c = "";
const y = $.find((u) => u.display === l.value);
if (!y) return { outputText: "", targetUser: r };
let M = y.template;
return (
M.includes("$(diff)") && !c && p && (c = yield T(p, r)),
(M = M.replaceAll("$(day)", "{{subst:CURRENTDAY}}")
.replaceAll("$(month)", "{{subst:CURRENTMONTHNAME}}")
.replaceAll("$(year)", "{{subst:CURRENTYEAR}}")
.replaceAll("$(page)", p)
.replaceAll("$(diff)", c)
.replaceAll("$(user)", mw.config.get("wgUserName") || "")
.replaceAll("$(extra)", d.value[y.display] || "")),
{
outputText: `
{{${s.value ? "subst:" : ""}${M}}}
~~~~`,
targetUser: r,
}
);
});
return {
open: t,
pageInput: a,
substCheckbox: s,
selectedTemplate: l,
extraInputs: d,
groupedTemplates: N,
canSubmit: E,
getPageInputStatus: f,
onPrimaryAction: () =>
x(this, null, function* () {
if (!E.value) return;
t.value = !1;
const { outputText: p, targetUser: r } = yield v();
try {
yield new mw.Api().postWithToken("csrf", {
action: "edit",
title: `Discussion utilisateur:${r}`,
appendtext: p,
summary: `Message utilisateur : ${l.value}`,
tags: "C-helper",
}),
mw.notify("Le message a bien été ajouté.", {
title: "C-helper",
type: "success",
});
} catch (c) {
mw.notify("Erreur lors de l'ajout du message.", {
title: "C-helper",
type: "error",
});
}
}),
onDefaultAction: () => {
t.value = !1;
},
};
},
}),
te = (t, a) => {
const s = t.__vccOpts || t;
for (const [l, d] of a) s[l] = d;
return s;
},
ae = { class: "message-manager" },
se = { class: "subst-section" },
re = { class: "page-input-container" },
ie = { class: "extra-input" };
function le(t, a, s, l, d, m) {
const f = e.resolveComponent("CdxCheckbox"),
E = e.resolveComponent("CdxLabel"),
N = e.resolveComponent("CdxRadio"),
T = e.resolveComponent("CdxTextInput"),
v = e.resolveComponent("CdxField"),
U = e.resolveComponent("CdxDialog");
return (
e.openBlock(),
e.createBlock(
U,
{
open: t.open,
"onUpdate:open": a[3] || (a[3] = (A) => (t.open = A)),
title: "C helper - Informer un utilisateur",
"primary-action": {
label: "Valider la requête",
actionType: "progressive",
disabled: !t.canSubmit,
},
"default-action": { label: "Fermer" },
onPrimary: t.onPrimaryAction,
onDefault: t.onDefaultAction,
},
{
default: e.withCtx(() => [
e.createElementVNode("div", ae, [
e.createElementVNode("div", se, [
e.createVNode(
f,
{
modelValue: t.substCheckbox,
"onUpdate:modelValue":
a[0] || (a[0] = (A) => (t.substCheckbox = A)),
},
{
default: e.withCtx(
() =>
a[4] ||
(a[4] = [
e.createTextVNode(" Substituer les modèles "),
])
),
_: 1,
},
8,
["modelValue"]
),
]),
(e.openBlock(!0),
e.createElementBlock(
e.Fragment,
null,
e.renderList(
t.groupedTemplates,
(A, p) => (
e.openBlock(),
e.createElementBlock(
"div",
{ key: p, class: "message-group" },
[
e.createVNode(
E,
{ class: "group-label" },
{
default: e.withCtx(() => [
e.createTextVNode(e.toDisplayString(p), 1),
]),
_: 2,
},
1024
),
(e.openBlock(!0),
e.createElementBlock(
e.Fragment,
null,
e.renderList(A, (r) => {
var c;
return (
e.openBlock(),
e.createElementBlock(
"div",
{
key: r.display,
class: "template-container",
},
[
e.createVNode(
N,
{
modelValue: t.selectedTemplate,
"onUpdate:modelValue":
a[1] ||
(a[1] = (y) =>
(t.selectedTemplate = y)),
"input-value": r.display,
name: "message-radio",
class: "template-radio",
},
e.createSlots(
{
default: e.withCtx(() => [
e.createTextVNode(
e.toDisplayString(r.display) +
" ",
1
),
]),
_: 2,
},
[
r.help
? {
name: "description",
fn: e.withCtx(() => [
e.createTextVNode(
e.toDisplayString(r.help),
1
),
]),
key: "0",
}
: void 0,
]
),
1032,
["modelValue", "input-value"]
),
e.withDirectives(
e.createElementVNode(
"div",
re,
[
e.createVNode(
v,
{ status: t.getPageInputStatus(r) },
{
default: e.withCtx(() => [
e.createVNode(E, null, {
default: e.withCtx(
() =>
a[5] ||
(a[5] = [
e.createTextVNode(
"Article modifié :"
),
])
),
_: 1,
}),
e.createVNode(
T,
{
modelValue: t.pageInput,
"onUpdate:modelValue":
a[2] ||
(a[2] = (y) =>
(t.pageInput = y)),
placeholder:
"Veuillez renseigner l'article concerné...",
},
null,
8,
["modelValue"]
),
]),
_: 2,
},
1032,
["status"]
),
],
512
),
[
[
e.vShow,
t.selectedTemplate === r.display &&
((c = r.required) == null
? void 0
: c.includes("page")),
],
]
),
e.withDirectives(
e.createElementVNode(
"div",
ie,
[
e.createVNode(
v,
{ status: "default" },
{
default: e.withCtx(() => [
e.createVNode(
E,
null,
{
default: e.withCtx(() => [
e.createTextVNode(
e.toDisplayString(
r.extra
),
1
),
]),
_: 2,
},
1024
),
e.createVNode(
T,
{
modelValue:
t.extraInputs[r.display],
"onUpdate:modelValue": (
y
) =>
(t.extraInputs[
r.display
] = y),
disabled:
t.selectedTemplate !==
r.display,
},
null,
8,
[
"modelValue",
"onUpdate:modelValue",
"disabled",
]
),
]),
_: 2,
},
1024
),
],
512
),
[
[
e.vShow,
t.selectedTemplate === r.display &&
r.extra,
],
]
),
]
)
);
}),
128
)),
]
)
)
),
128
)),
]),
]),
_: 1,
},
8,
["open", "primary-action", "onPrimary", "onDefault"]
)
);
}
const oe = te(ee, [["render", le]]),
h = {
bandeaux: {
id: "c-helper-codex-bandeaux",
title: "Apposer des bandeaux de maintenance",
label: "Bandeaux",
},
messages: {
id: "c-helper-codex-messages",
title: "Laisser un message sur la pdd de l'utilisateur",
label: "Message",
},
};
function b(t, a, s = !1) {
const l = window
.$("<li>")
.addClass(s ? "toggle-list-item mw-list-item-js" : "mw-list-item")
.attr("id", t.id),
d = window
.$("<a>")
.addClass(s ? "toggle-list-item__anchor" : "")
.attr({ href: "#", title: t.title })
.on("click", (m) => {
m.preventDefault(), a();
});
return (
s
? d.append(
window.$("<span>").addClass("minerva-icon"),
window
.$("<span>")
.addClass("toggle-list-item__label")
.text(t.label)
)
: d.text(t.label),
l.append(d)
);
}
function ne() {
const t = mw.config.get("skin"),
a = mw.config.get("wgNamespaceNumber"),
s = {
bandeaux: () => e.createApp(K).mount("#app-bandeaux"),
messages: () => e.createApp(oe).mount("#app-messages"),
};
if (t === "minerva") {
const l = window.$(".page-actions-overflow-list");
if (!l.length) return;
switch (a) {
case 0:
l.append(b(h.bandeaux, s.bandeaux, !0));
break;
case 1:
l.append(b(h.messages, s.messages, !0));
break;
case 2:
l.append(
b(h.bandeaux, s.bandeaux, !0),
b(h.messages, s.messages, !0)
);
break;
case 3:
l.append(b(h.messages, s.messages, !0));
break;
}
} else {
const l = window.$("#p-cactions");
if (!l.length) return;
const d = l.clone(),
m = d.find("ul");
switch (
(d
.removeAttr("id")
.addClass("vector-menu")
.attr("title", "C-helper")
.find(".vector-menu-heading")
.text("Č (version Codex)"),
m.empty(),
a)
) {
case 0:
m.append(b(h.bandeaux, s.bandeaux));
break;
case 1:
m.append(b(h.messages, s.messages));
break;
case 2:
m.append(b(h.bandeaux, s.bandeaux), b(h.messages, s.messages));
break;
case 3:
m.append(b(h.messages, s.messages));
break;
}
m.children().length && d.insertAfter(l);
}
}
function B() {
window.$("#app-bandeaux, #app-messages").length ||
mw.config.get("wgNamespaceNumber") < 0 ||
(window.$('<div id="app-bandeaux">').insertBefore("#mw-content-text"),
window.$('<div id="app-messages">').insertBefore("#mw-content-text"),
ne());
}
document.readyState === "loading"
? document.addEventListener("DOMContentLoaded", B)
: B();
(function () {
"use strict";
mw.util
.addCSS(`.bandeaux-manager{max-height:70vh;overflow-y:auto;padding:1em}.search-section{position:sticky;top:0;background-color:var(--background-color-base);padding:1em 0;margin:-1em -1em 1em;z-index:2}.search-input{padding:0 1em}.selected-bandeaux{margin-bottom:1.5em}.group-label{font-weight:700;color:var(--color-subtle);margin:1em 0 .5em}.bandeau-group{margin-bottom:1em}.bandeau-item{padding:.5em 0}.input-field{margin:.5em 0 .5em 1.5em}.selection-list{font-size:.875em;line-height:1.25}.message-manager{max-height:70vh;overflow-y:auto;padding:1em}.subst-section{margin-bottom:1em}.message-group{margin-bottom:1.5em}.group-label{font-weight:700;margin-bottom:.5em;color:#54595d}.template-container{margin:.5em 0}.page-input-container,.extra-input{margin:.5em 0 .5em 1.5em}
/*$vite$:1*/`);
})();
}
);
// </nowiki>