Usuari:Coet/wikistorm/page.js
Aparença
El codi que afegiu en aquesta pàgina podria tenir contingut maliciós que comprometi el vostre compte. Si no esteu segur si el codi a afegir és segur, pregunteu abans en la Taverna. El codi s'executarà en mostrar una previsualització d'aquesta pàgina. |
Nota: Després de desar, heu de netejar la memòria cau del navegador per veure els canvis. En la majoria de navegadors amb Windows o Linux, premeu Ctrl+F5 o bé premeu Shift i cliqueu el botó "Actualitza" (Ctrl i "Actualitza" amb Internet Explorer). Vegeu més informació i instruccions per a cada navegador a Viquipèdia:Neteja de la memòria cau.
(function($){
class Page {
constructor(title) {
this.title = title;
this.normalized = '';
this.url = '';
this.content = '';
this.init()
}
init() {
this.normalized = Wikistorm.utils.normalizeTitle(this.title);
this.url = new mw.Title(this.normalized).getUrl();
}
getContent() {
$.getJSON(mw.util.wikiScript('api'), {
format: 'json',
action: 'query',
indexpageids: '',
titles: this.title,
prop: 'revisions',
rvslots: '*',
rvprop: 'content'
}).then((data) => {
let pageid = data.query.pageids[0];
this.content = data.query.pages[pageid].revisions[0].slots.main['*'];
}).fail( (error) => {
console.error(error);
});
}
setContent(params) {
let token = mw.user.tokens.get('csrfToken');
console.log('csrfToken', token);
let postParams = {
"action": "edit",
"format": "json",
"title": this.title,
"text": params.content,
"summary": params.summary,
"token": token,
"formatversion": "2"
};
$.post(mw.util.wikiScript('api'), postParams).then((data) => {
console.log(data);
if (data.edit.result === 'Success' && !data.edit.nochange) {
if (!params.notification)
mw.notify(`S'ha editat la pàgina ${this.title}`);
else
mw.notify(params.notification)
} else if (data.edit.result === 'Success' && data.edit.nochange){
mw.notify(`No s'ha pogut editar la pàgina ${this.title}`);
}
}).fail( (error) => {
console.error(error);
});
}
appendContent(params) {
$.getJSON(mw.util.wikiScript('api'), {
format: 'json',
action: 'query',
indexpageids: '',
titles: this.title,
prop: 'revisions',
rvslots: '*',
rvprop: 'content'
}).then((data) => {
let pageid = data.query.pageids[0];
let oldContent = data.query.pages[pageid].revisions[0].slots.main['*'];
params.content = `${oldContent}\n\n${params.newContent}`;
this.setContent(params);
}).fail( (error) => {
console.error(error);
});
}
removeTemplate(params){
$.getJSON(mw.util.wikiScript('api'), {
format: 'json',
action: 'query',
indexpageids: '',
titles: this.title,
prop: 'revisions',
rvslots: '*',
rvprop: 'content'
}).then((data) => {
let pageid = data.query.pageids[0];
let oldContent = data.query.pages[pageid].revisions[0].slots.main['*'];
let hasTemplate = oldContent.search(params.searchPattern) > -1;
if (hasTemplate) {
if (!params.replacePattern)
params.replacePattern = params.searchPattern
params.content = oldContent.replace(params.replacePattern, '');
this.setContent(params);
}
}).fail( (error) => {
console.error(error);
});
}
open() {
window.open(`${mw.config.get('wgServer')}/wiki/${this.title}`);
}
}
Wikistorm.Page = Page;
var wsPage = Wikistorm.Page;
window.wsPage = wsPage;
if (mw.config.get('wgTitle') == "Esborrar pàgines/Propostes") {
var wsAfDPage = new wsPage(mw.config.get('wgPageName'));
wsAfDPage.getContent();
window.wsAfDPage = wsAfDPage;
}
})(jQuery);