Benutzer:TenWhile6/XReport.js
Zur Navigation springen
Zur Suche springen
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
//<nowiki>
Xv = 'v1.6';
Xn = 'XReport';
XReport = `${Xn} ${Xv}`;
XLink = '[[:m:Special:MyLanguage/User:TenWhile6/XReport|XReport]]';
XLinkS = `<small>${XLink}</small>`;
XLinkK = `(${XLink} ${Xv})`;
sig = ' --~~~~';
pSummary = 'Reporting: Page [[$1]] '+XLinkK;
uSummary = 'Reporting [[Special:Contributions/$1|$1]] '+XLinkK;
blocation = mw.config.get('wgMFMode') === 'stable' ? 'p-tb' : 'p-cactions';
api = new mw.Api();
requested = false;
generalwidth = 500;
DB = mw.config.get('wgDBname');
RelevantPageName = mw.config.get('wgRelevantPageName') != null ? mw.config.get('wgRelevantPageName').replace(/_/g, ' ') : '';
RelevantUserName = mw.config.get('wgRelevantUserName') != null ? mw.config.get('wgRelevantUserName') : '';
metaapi = mw.config.get('wgDBname') === 'metawiki' ? new mw.Api() : new mw.ForeignApi('https://meta.wikimedia.org/w/api.php');
metaapi.get({
action: 'query',
prop: 'revisions',
titles: 'User:TenWhile6/XReport/languageData.json',
rvlimit: '1',
rvprop: 'content',
rvslots: 'main',
formatversion: '2',
format: 'json'
}).done( function ( Ldata ) {
LangData = JSON.parse(Ldata.query.pages[0].revisions[0].slots.main.content);
var lang = mw.user.options.get('language') in LangData ? mw.user.options.get('language') : 'en';
function trnslt(key) {
if (LangData[lang][key]) {
return LangData[lang][key];
}
return LangData.en[key];
}
var WikiData = {
'SRG': {
'page': 'Steward requests/Global',
'section': -1,
'regex': '{{\\s*[Ll]ock[Hh]ide\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '\n=== Global lock for $1 ===\n{{Status}}\n*{{LockHide|1=$1}}\n$2 '+XLinkS+sig,
'I': {
'page': 'Steward requests/Global',
'section': 1,
'regex': '{{\\s*[Ll]uxotool\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '\n=== Global block for [[Special:Contributions/$1|$1]] ===\n{{Status}}\n* {{Luxotool|$1}}\n$2 '+XLinkS+sig,
},
},
'GSR': {
'page': 'Global sysops/Requests', // [WORK IN PROGRESS]
},
// GS-Opted-Out Wikis -- Status: 22.04.2024
'alswiki': {
'page': 'Wikipedia:Vandalismusmeldung',
'regex': '==\\s*Benutzer:$1\\s*==',
'regeX': '|{{\\s*[Bb]enutzer\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== [[Benutzer:$1]] ==\n{{Benutzer|$1}} $2 '+XLinkS+sig,
'P': {
'page': 'Wikipedia:Vandalismusmeldung',
'regex': '==\\s*Seite \\s*$1\\s*==',
'regeX': '|{{\\s*[Aa]rtikel\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== Seite [[$1]] ==\n{{Artikel|$1}} $2 '+XLinkS+sig
}
},
'anwiki': {
'page': 'Wikipedia:Peticions a los almenistradors',
'regex': '==\\s*Report concerning User:$1\\s*==',
'rtext': '== Report concerning User:$1 ==\n* [[Special:Contributions/$1\\|$1]] – $2 '+XLinkS+sig,
},
'arwiki': {}, // [CHECK NEEDED]
'bgwiki': {
'page': 'Уикипедия:Заявки_към_администраторите',
'regex': '==\\s*Блокиране на $1\\s*==',
'rtext': '== Блокиране на $1 ==\n[[Special:Contributions/$1]]\n\n$2 '+XLinkS+sig
},
'bnwiki': {
'page': 'উইকিপিডিয়া:প্রশাসকদের আলোচনাসভা',
'regex': '==\\s*বাধাদানের অনুরোধ: $1\\s*==',
'rtext': '== বাধাদানের অনুরোধ: $1 ==\n* [[বিশেষ:অবদান/$1]]\n\n$2 '+XLinkS+sig
},
'bswiki': {}, // [CHECK NEEDED] 'page': 'Wikipedia:Pitanja za administratore'
'cawiki': {}, // [CHECK NEEDED] 'page': 'Viquipèdia:Observatori del vandalisme'
'commonswiki': {
'page': 'Commons:Administrators\' noticeboard/Vandalism',
'regex': '==\\s*$1\\s*==',
'regeX': '|{{\\s*[Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '{{subst:Report vandal|$1|$2 '+XLinkS+sig+'}}'
},
'cswiki': {}, // [CHECK NEEDED] 'page': 'Wikipedie:Nástěnka správců'
'cswikisource': {}, // [CHECK NEEDED] 'page': 'Wikizdroje:Nástěnka správců'
'cswiktionary': {}, // [CHECK NEEDED] 'page': 'Wikislovník:Nástěnka správců'
'cywiki': {}, // [CHECK NEEDED] 'page': 'Wicipedia:Negesfwrdd gweinyddiaeth'
'dawiki': {}, // [CHECK NEEDED] 'page': 'Wikipedia:Anmodning om administratorassistance'
'dewiki': {
'page': 'Wikipedia:Vandalismusmeldung',
'regex': '==\\s*Benutzer:$1\\s*==',
'regeX': '|{{\\s*[Bb]enutzer\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'summary': 'Meldung: [[Special:Contributions/$1|$1]] ([[User:TenWhile6/XReport|XReport]] '+ Xv+')',
'rtext': '== [[Benutzer:$1]] ==\n{{Benutzer|$1}} $2 <small><small>[[Benutzer:TenWhile6/XReport|XReport]]</small></small>'+sig,
'P': {
'page': 'Wikipedia:Vandalismusmeldung',
'regex': '==\\s*Seite \\s*$1\\s*==',
'regeX': '|{{\\s*[Aa]rtikel\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'summary': 'Meldung: Seite [[$1]] ([[User:TenWhile6/XReport|XReport]] '+ Xv+')',
'rtext': '== Seite [[$1]] ==\n{{Artikel|$1}} $2 <small><small>[[Benutzer:TenWhile6/XReport|XReport]]</small></small>'+sig
}
},
'dewikibooks': {
'page': 'Wikibooks:Vandalensperrung',
'regex': '==\\s*Benutzer:$1\\s*==',
'regeX': '|{{\\s*[Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== [[Benutzer:$1]] ==\n{{Vandale|$1}} $2 '+XLinkS+sig
},
'dewikisource': {}, // no report page
'dewikivoyage': {}, // no report page
'dewiktionary': {
'page': 'Wiktionary:Vandalismusmeldung',
'regex': '==\\s*Benutzer:$1\\s*==',
'regeX': '|{{\\s*[Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== [[Benutzer:$1]] ==\n{{Benutzer|$1}} $2 '+XLinkS+sig
},
'elwiki': {}, // [CHECK NEEDED]
'enwiki': {
'page': 'Wikipedia:Administrator intervention against vandalism',
'regex': '{{\\s*[Ii][Pp]vandal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'regeX': '|{{\\s*[Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '*{{vandal|$1}} – $2 '+XLinkS+sig
},
'enwikinews': {}, // [CHECK NEEDED]
'enwikiquote': {
'page': 'Wikiquote:Vandalism in progress',
'regex': '==\\s*Report concerning [[Special:Contributions/$1|$1]]\\s*==',
'regeX': '|{{\\s*[Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== Report concerning [[Special:Contributions/$1|$1]] ==\n\n* {{vandal|$1}}\n$2 '+XLinkS+sig
},
'enwikisource': {}, // [CHECK NEEDED]
'enwiktionary': {}, // [CHECK NEEDED]
'eowiki': {}, // [CHECK NEEDED]
'eswiki': {
'page': 'Wikipedia:Vandalismo en curso',
'regex': '==\\s*$1\\s*==',
'rtext': '{{subst:ReportevandalismoIP|1=$1|2=$2 '+XLinkS+'}}'
},
'eswikinews': {}, // [CHECK NEEDED]
'etwiki': {}, // [CHECK NEEDED]
'euwiki': {}, // [CHECK NEEDED]
'fawiki': {}, // [CHECK NEEDED]
'fiwiki': {
'page': 'Wikipedia:Ylläpitäjien ilmoitustaulu',
'regex': 'Käyttäjä:\\s*$1\\s*',
'rtext': '== Estopyyntö $1 ({{subst:LOCALDAY}}.{{subst:LOCALMONTH}}.{{subst:LOCALYEAR}}) ==\n<big>$1</big>\n*\'\'\'Toiminnot:\'\'\' [[Käyttäjä:$1|Käyttäjäsivu]] | [[Keskustelu käyttäjästä:$1|keskustelusivu]] | [[Toiminnot:Muokkaukset/$1|muokkaukset]] | [[Toiminnot:Estä/$1|\'\'\'estä\'\'\']]\n*\'\'\'Lisätiedot:\'\'\' $2 '+XLinkS+sig
},
'frwiki': {
'page': 'Wikipédia:Vandalisme en cours',
'regex': '|{{\\s*[Uu]+\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== Demande de blocage de $1 ==\n\n* Auteur du vandalisme : {{u+|$1}}\n* Type de dégâts : $2\n\n<!-- Merci de ne pas modifier la ligne ci-dessous -->\n<small>[Via '+XLinkS+']</small> Message déposé par'+sig
},
'frwikibooks': {}, // [CHECK NEEDED]
'frwikisource': {}, // [CHECK NEEDED]
'frwikiversity': {}, // [CHECK NEEDED]
'frwiktionary': {}, // [CHECK NEEDED]
'glwiki': {}, // [CHECK NEEDED]
'hewiki': {}, // [CHECK NEEDED]
'hewikisource': {}, // [CHECK NEEDED]
'hrwiki': {}, // [CHECK NEEDED]
'huwiki': {}, // [CHECK NEEDED]
'idwiki': {
'page': 'Wikipedia:Intervensi pengurus terhadap vandalisme',
'regex': '$1 }}',
'rtext': '== [[User:$1]] ==\n* {{vandal-m|$1}} $2 '+XLinkS+sig
},
'iswiki': {}, // [CHECK NEEDED]
'itwiki': {
'page': 'Wikipedia:Vandalismi in corso',
'regex': '|{{\\s*[Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '{{vandalo|$1}} $2 '+XLinkS+sig
},
'jawiki': {}, // [CHECK NEEDED] 'page': 'Wikipedia:管理者伝言板/投稿ブロック'
'kawiki': {}, // [CHECK NEEDED]
'kowiki': {}, // [CHECK NEEDED]
'lawiki': {}, // [CHECK NEEDED]
'ltwiki': {}, // [CHECK NEEDED]
'lvwiki': {}, // [CHECK NEEDED]
'metawiki': {
'page': 'Meta:Requests for help from a sysop or bureaucrat',
'regex': '==\\s*Report concerning User:$1\\s*==',
'regeX': '|{{\\s*[Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== Report concerning User:$1 ==\n{{vandal|1=$1}} — \'\'\'Reasons:\'\'\' $2 '+XLinkS+sig
},
'mkwiki': {}, // [CHECK NEEDED]
'mlwiki': {}, // [CHECK NEEDED]
'mrwiki': {}, // [CHECK NEEDED]
'mswiki': {}, // [CHECK NEEDED] 'page': 'Wikipedia:Campur tangan penyelia terhadap vandalisme'
'nlwiki': {
'page': 'Wikipedia:Verzoekpagina voor moderatoren/RegBlok',
'section': 2,
'regex': '===\\s*$1\\s*===',
'regeX': '|{{\\s*[Ll]g\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '=== $1 ===\n*{{lg|$1}} $2 '+XLinkS+sig,
'I': {
'page': 'Wikipedia:Verzoekpagina voor moderatoren/IPBlok',
'section': 2,
'regex': '{{\\s*[Ll]g\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '*{{lg|$1}} $2 '+XLinkS+sig
},
'P': {
'page': 'Wikipedia:Verzoekpagina voor moderatoren/Beveiligen',
'section': 1,
'regex': '\\s*$1\\s*',
'rtext': '== [[$1]] ==\n$2 '+XLinkS+sig
},
},
'nlwikibooks': {}, // [CHECK NEEDED]
'nlwiktionary': {}, // [CHECK NEEDED]
'nnwiki': {}, // [CHECK NEEDED]
'nowiki': {}, // [CHECK NEEDED] 'page': 'Wikipedia:Pågående vandalisme'
'plwiki': {
'page': 'Wikipedia:Prośby do administratorów',
'regex': '==\\s*Zgłoszenie w sprawie użytkownika $1\\s*==',
'regeX': '|{{\\s*[Ll]w\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== Zgłoszenie w sprawie użytkownika $1 ==\n\n* {{lw|$1}}\n\n$2\n\nZgłasza: '+XLinkS+sig
},
'plwikimedia': {}, // [CHECK NEEDED]
'plwikiquote': {}, // [CHECK NEEDED]
'plwikisource': {}, // [CHECK NEEDED]
'plwiktionary': {}, // [CHECK NEEDED]
'ptwiki': {}, // [CHECK NEEDED] 'page': 'Wikipédia:Pedidos/Notificações de vandalismo'
'rowiki': {}, // [CHECK NEEDED]
'ruwiki': {}, // [CHECK NEEDED] 'page': 'Википедия:Запросы к администраторам/Быстрые'
'sewikimedia': {}, // [CHECK NEEDED]
'simplewiki': {
'page': 'Wikipedia:Vandalism in progress',
'regex': '{{\\s*[Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '*{{Vandal|$1}} – $2 '+XLinkS+sig,
I: {
'page': 'Wikipedia:Vandalism in progress',
'regex': '{{\\s*[Ii][Pp][Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '*{{IPvandal|$1}} – $2 '+XLinkS+sig,
}
},
'skwiki': {
'page': 'Wikipédia:Nástenka správcov',
'regex': '==\\s*Hlásení vandalizmu: $1\\s*==',
'regeX': '|{{\\s*[Rr]edaktor\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== Hlásení vandalizmu: $1 ==\n{{Redaktor|$1}}\n\n$2 '+XLinkS+sig
},
'slwiki': {
'page': 'Wikipedija:Prošnje za administratorsko pomoč',
'regex': '==\\s*Report concerning User:$1\\s*==',
'regeX': '|{{\\s*[Uu]ser\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '== Report concerning User:$1 ==\n{{User|$1}} $2 '+XLinkS+sig
},
'sourceswiki': {
'page': 'Wikisource:Vandalism in progress',
'regex': '==\\s*$1\\s*==',
'regeX': '|{{\\s*[Uu]ser\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'section': '0',
'rtext': '\n== $1 ==\n* {{User|$1}}\n$2 '+XLinkS+sig
},
'specieswiki': {}, // [CHECK NEEDED]
'srwiki': {}, // [CHECK NEEDED] 'page': 'Википедија:Пријаве вандализама'
'svwiki': {}, // [CHECK NEEDED] 'page': 'Wikipedia:Begäran om åtgärder'
'svwiktionary': {}, // [CHECK NEEDED]
'tawiki': {}, // [CHECK NEEDED]
'tewiki': {}, // [CHECK NEEDED]
'thwiki': {
'page': 'วิกิพีเดีย:รายชื่อการก่อกวน',
// [!!!] REGEX FEHLT [!!!]
'rtext': '* {{ก่อกวน|$1}} $2. '+XLinkS+sig,
},
'tlwiki': {}, // [CHECK NEEDED]
'trwiki': {}, // [CHECK NEEDED] 'page': 'Vikipedi:Kullanıcı engelleme talepleri'
'urwiki': {
'page': 'ویکیپیڈیا:دیوان_خاص',
'regex': '==\\s*User:$1\\s*==',
'rtext': '== [[صارف:$9]] پر پابندئی لگائیں ==\n* {{user|$1}} $2 '+XLinkS+sig,
},
'viwiki': {}, // [CHECK NEEDED] 'page': 'Wikipedia:Tin nhắn cho bảo quản viên'
'wikidatawiki': {
'page': 'Wikidata:Administrators\' noticeboard',
'regex': '==\\s*Report concerning User:$1\\s*==',
'regeX': '|{{\\s*[Vv]andal\\s*\\|\\s*(1(\\s*)=|)\\s*$1\\s*}}',
'rtext': '{{subst:VandalReport|$1|$2 '+XLinkS+'}}'
},
'zh_yuewiki': {}, // [CHECK NEEDED]
'zhwiki': {}, // [CHECK NEEDED] 'page': 'Wikipedia:当前的破坏'
};
function DBdata(modus, status, key) {
DBx = modus === true ? 'SRG' : DB;
if (status === 'I') {
if ('I' in WikiData[DBx]) {
if (WikiData[DBx][status][key]) {
return WikiData[DBx][status][key];
} else {
if (['regex','regeX','section','summary'].includes(key)) {
return '';
}
else {
mw.notify(`1. Error: DBdata() at ${DBx} status ${status} key ${key}`,{'type':'error','title':XReport});
}
}
}
else {
status = 'U';
}
}
if (status === 'U') {
if (WikiData[DBx][key]) {
return WikiData[DBx][key];
}
else {
if (['regex','regeX','section','summary','rtext'].includes(key)) {
return '';
}
else {
mw.notify(`2. Error: DBdata() at ${DBx} status ${status} in ${key}`,{'type':'error','title':XReport});
}
}
}
else if (status === 'P' && WikiData[DBx][status][key]) {
return WikiData[DB][status][key];
}
else if (status === 'P' && ['regex','regeX','section','summary'].includes(key)) {
return '';
}
else {
mw.notify(`3. Error: DBdata() at ${DBx} status ${status} in ${key}`,{'type':'error','title':XReport});
}
}
function XReportUser() {
( function (mw, $) {
function init() {
mw.loader.using(['mediawiki.api', 'mediawiki.util', 'jquery.ui'])
.then(function () {
$('<div>')
.attr('id', 'reportuser')
.append(
$('<form>')
.attr('id', 'reportuser-form')
.submit(reportuser)
.append(
$('<fieldset>')
.append(
$('<legend>')
.text(trnslt('title'))
) // </legend>
.append(
$('<p>')
.append(
$('<label>')
.attr('for', 'requested-user')
.text(trnslt('username'))
) // </label>
.append(
$('<input>')
.attr( {
'type': 'text',
'id': 'requested-user',
'value': RelevantUserName
} )
) // </input>
) // </p>
.append(
$('<p>')
.append(
$('<label>')
.attr('for', 'reportuser-reason')
.text(trnslt('reason'))
) // </label>
.append(
$('<input style="width:27em">')
.attr( {
'type': 'text',
'id': 'reportuser-reason'
} )
) // </input>
) // </p>
)
) // </form>
.append(
$('<p>')
.attr('id', 'reportuser-result')
) // </p>
.appendTo('#content')
.dialog( {
title: XReport,
autoOpen: false,
modal: true,
width: generalwidth,
buttons: [ {
id: 'reportuser-button-request',
text: trnslt('button'),
click: reportuser
}, {
id: 'reportuser-global-button-request',
text: trnslt('global-button'),
click: reportuser
}, {
id: 'reportuser-button-close',
text: trnslt('close'),
click: function () {
$('#reportuser').dialog('close');
}
} ]
} );
var portletLink = mw.util.addPortletLink(
blocation,
'#',
trnslt('title'),
'ca-reportuser',
trnslt('description'),
null,
'#ca-reportuser'
);
$(portletLink).click(function (e) {
e.preventDefault();
if (DB in WikiData) {
if ('page' in WikiData[DB]) {
$('#reportuser-result').html('');
$('#reportuser').dialog('open');
}
else {
mw.notify(trnslt('error-activated').replace('$1', Xn),{'type':'warn','title':XReport});
}
}
else {
mw.notify('This is a global sysop wiki!\nIn the future, you will be able to report users to meta:Global sysops/requests (GS/R) with XReport.',{'title':XReport});
}
} );
} );
}
function reportuser(event) {
var modus = event.delegateTarget.attributes[1].nodeValue === 'reportuser-global-button-request' ? true : false;
var xapi = modus ? metaapi : api;
var username = $('#requested-user').val();
var status = mw.util.isIPAddress(username, true) ? 'I' : 'U';
var regex = DBdata(modus, status, 'regex').replace('$1', username) + DBdata(modus, status, 'regeX').replace('$1', username);
xapi.get( {
action: 'query',
prop: 'revisions',
formatversion: 2,
rvprop: 'content',
rvslots: 'main',
rvlimit: 1,
titles: DBdata(modus, status, 'page'),
}).then(function(data) {
if (data.error) {
mw.notify(`Error: reportuser() at ${DB}, action: api.get`,{'type':'error','title':XReport,autoHide: false});
return;
}
else if (data.query.pages[0].revisions == undefined) {
mw.notify(`Error: reportuser() at ${DB}, action: api.get, error: undefined`,{'type':'error','title':XReport,autoHide: false});
return;
}
if (data.query.pages[0].revisions[0].slots.main.content.match(new RegExp(regex,'g')) !== null && regex !== '') {
requested = true;
}
var reason = $('#reportuser-reason').val();
if (requested) {
showError('requested');
requested = false;
}
else if (username === '') {
showError('user');
}
else if (reason === '') {
showError('reason');
}
else {
addRequest(username, reason, modus, status);
}
event.preventDefault();
} );
}
function showError(err, p1) {
$('#reportuser-result').html(
$('<p>')
.attr('class', 'error')
.text(trnslt('error-' + err).replace('$1', p1))
);
}
function addRequest(username, reason, modus, status) {
var xapi = modus ? metaapi : api;
reason = reason.replace( /(.*)--~~~~/g, '$1' );
reason = reason.replace( /(.*)~~~~/g, '$1' );
if (reason.charAt(0) === '') {
reason = reason.substr(1);
}
if (modus === true) {xapi = metaapi} else {xapi = api}
uSummary = DBdata(modus, status, 'summary') !== '' ? DBdata(modus, status, 'summary') : uSummary;
uSummary = uSummary.replace('$1', username).replace('$1', username);
var reporttext = '\n'+DBdata(modus, status, 'rtext').replace('$1', username).replace('$1', username).replace('$1', username).replace('$1', username).replace('$1', username).replace('$1', username).replace('$2', reason).replace('9$', username);
if (DBdata(modus, status, 'section')) {
xapi.get({
action: 'parse',
page: DBdata(modus, status, 'page'),
prop: 'sections'
}).done( function (response) {
const sections = response.parse.sections.length;
sectionnum = DBdata(modus, status, 'section');
if (sectionnum === -1) {
sectionnum = sections - 1;
}
xapi.get({
action: 'parse',
page: DBdata(modus, status, 'page'),
prop: 'wikitext',
section: sectionnum
}).done( function( result ) {
var wikitext = result.parse.wikitext['*'] + reporttext;
xapi.postWithEditToken({
action: 'edit',
title: DBdata(modus, status, 'page'),
section: sectionnum,
text: wikitext,
summary: uSummary,
notminor: true,
nocreate: true
}).then(function (data) {
if (data.error && data.error.info) {
showError('api', data.error.info);
} else {
$('#reportuser').dialog('close');
mw.notify(trnslt('success'),{'type':'success','title':XReport});
}
}, function (jqXHR, textStatus, errorThrown) {
showError('api', textStatus);
});
});
});
}
else {
xapi.postWithEditToken( {
action: 'edit',
title: DBdata(modus, status, 'page'),
watchlist: 'nochange',
summary: uSummary,
appendtext: reporttext,
} )
.then(function(data) {
if (data.error && data.error.info) {
showError('api', data.error.info);
} else {
$('#reportuser').dialog('close');
mw.notify(trnslt('success'),{'type':'success','title':XReport});
}
}, function (jqXHR, textStatus, errorThrown) {
showError('api', textStatus);
});
}
}
$(init);
}(mediaWiki, jQuery));
}
function XReportPage() {
( function (mw, $) {
function init() {
mw.loader.using(['mediawiki.api', 'mediawiki.util', 'jquery.ui'])
.then(function() {
$('<div>')
.attr('id', 'reportpage')
.append(
$('<form>')
.attr('id', 'reportpage-form')
.submit(reportpage)
.append(
$('<fieldset>')
.append(
$('<legend>')
.text(trnslt('Ptitle'))
) // </legend>
.append(
$('<p>')
.append(
$('<label>')
.attr('for', 'requested-page')
.text(trnslt('pagename'))
) // </label>
.append(
$( '<input style="width:20em">' )
.attr( {
'type': 'text',
'id': 'requested-page',
'value': RelevantPageName
} )
) // </input>
) // </p>
.append(
$('<p>')
.append(
$('<label>')
.attr('for', 'reportpage-reason')
.text('Begründung:')
) // </label>
.append(
$('<input style="width:25em">')
.attr( {
'type': 'text',
'id': 'reportpage-reason'
} )
) // </input>
) // </p>
)
) // </form>
.append(
$('<p>')
.attr('id', 'reportpage-result')
) // </p>
.appendTo('#content')
.dialog( {
title: XReport,
autoOpen: false,
modal: true,
width: generalwidth,
buttons: [{
id: 'reportpage-button-request',
text: trnslt('button'),
click: reportpage
}, {
id: 'reportpage-button-close',
text: trnslt('close'),
click: function () {
$('#reportpage').dialog('close');
}
} ]
} );
var portletLink = mw.util.addPortletLink(
blocation,
'#',
trnslt('Ptitle'),
'ca-reportpage',
trnslt('Pdescription'),
null,
'#ca-reportpage'
);
$(portletLink).click(function(e) {
e.preventDefault();
$('#reportpage-result').html('');
$('#reportpage').dialog('open');
} );
} );
}
function reportpage(event) {
var modus = false;
var xapi = modus ? metaapi : api;
var pagename = $('#requested-page').val();
var status = 'P';
var Vregex = DBdata(modus, status, 'regex').replace('$1', pagename) + DBdata(modus, status, 'regeX').replace('$1', pagename);
xapi.get( {
action: 'query',
prop: 'revisions',
formatversion: 2,
rvprop: 'content',
rvslots: 'main',
rvlimit: 1,
titles: DBdata(modus, status, 'page'),
} )
.then(function (data) {
if (data.error) {
mw.notify(`Error: reportpage() at ${DB}, action: api.get`,{'type':'error','title':XReport,autoHide: false});
return;
}
else if (data.query.pages[0].revisions == undefined) {
mw.notify(`Error: reportpage() at ${DB}, action: api.get, error: undefined`,{'type':'error','title':XReport,autoHide: false});
return;
}
if ( data.query.pages[ 0 ].revisions[ 0 ].slots.main.content.match( new RegExp( Vregex, 'g' ) ) !== null ) {
requested = true;
}
var reason = $('#reportpage-reason').val();
if (requested) {
showError('requested');
requested = false;
}
else if (pagename.startsWith("Spezial:") || pagename.startsWith('Special:')) {
showError('specialpage');
}
else if (pagename === '') {
showError('page');
}
else if (reason === '') {
showError('reason');
}
else {
addRequest(pagename, reason, modus, status);
}
event.preventDefault();
} );
}
function showError(err, p1) {
$('#reportpage-result').html(
$('<p>')
.attr('class', 'error')
.text(trnslt('error-' + err).replace('$1', p1))
);
}
function addRequest(pagename, reason, modus, status) {
var xapi = modus ? metaapi : api;
if (reason.charAt(0) === ' ') {
reason = reason.substr(1);
}
pagename = pagename.replace(/_/g, ' ');
pSummary = DBdata(modus, status, 'summary') !== '' ? DBdata(modus, status, 'summary').replace('$1', pagename) : pSummary.replace('$1', pagename);
var reporttext = '\n'+DBdata(modus, status, 'rtext').replace('$1', pagename).replace('$1', pagename).replace('$2', reason);
if ('section' in WikiData[DB][status]) {
xapi.get( {
action: 'parse',
page: DBdata(modus, status, 'page'),
prop: 'wikitext',
section: DBdata(modus, status, 'section')
}).done( function( result ) {
var wikitext = result.parse.wikitext['*'] + reporttext;
xapi.postWithEditToken( {
action: 'edit',
title: DBdata(modus, status, 'page'),
section: DBdata(modus, status, 'section'),
text: wikitext,
summary: pSummary,
notminor: true,
nocreate: true
}).then(function (data) {
if (data.error && data.error.info) {
showError('api', data.error.info);
} else {
$('#reportpage').dialog('close');
mw.notify(trnslt('success'),{'type':'success','title':XReport});
}
}, function (jqXHR, textStatus, errorThrown) {
showError('api', textStatus);
});
});
}
else {
api.postWithEditToken( {
action: 'edit',
title: DBdata(modus, status, 'page'),
watchlist: 'nochange',
summary: pSummary,
appendtext: reporttext,
})
.then(function (data) {
if (data.error && data.error.info) {
showError('api', data.error.info);
} else {
$('#reportpage').dialog('close');
mw.notify(trnslt('success'),{'type':'success','title':XReport});
}
}, function (jqXHR, textStatus, errorThrown) {
showError('api', textStatus);
});
}
}
$(init);
}(mediaWiki, jQuery));
}
XReportUser();
if ('P' in WikiData[DB]) {
XReportPage();
}
} );
//</nowiki>
//this script was originally forked from [[m:User:Syunsyunminmin/SReporter.js]]