Vés al contingut

Usuari:Coet/wikistorm/page.js

De la Viquipèdia, l'enciclopèdia lliure

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);