MediaWiki:Gadget-DeletePage.js

Från Wikipedia

OBS: Efter du har publicerat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.

  • Firefox / Safari: Håll ned Skift och klicka på Uppdatera sidan eller tryck Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
  • Google Chrome: Tryck Ctrl-Skift-R (⌘-Skift-R på Mac)
  • Internet Explorer / Edge: Håll ned Ctrl och klicka på Uppdatera eller tryck Ctrl-F5
  • Opera: Tryck Ctrl-F5.
$( function() {
	'use strict';
	var title = 'Delete the page';
	var content = $( '#mw-content-text' );
	var templatedelete = content.find( '.radera' ).first();
	var templatehangon = content.find( '.laatvara' );
	var comment;
	var commenttext;
	var frag = /<a href="\/wiki\/([^"#\n]+)#([^"#\n]+)?"(?: class="mw-redirect")? title="[^"\n]+">([^<>]+)<\/a>/;
	var noFrag = /<a href="\/wiki\/([^"#\n]+)"(?: class="mw-redirect")? title="[^"\n]+">([^<>]+)<\/a>/;
	var html;
	var obj = {
		action: 'delete',
		title: mw.config.get( 'wgPageName' )
	};
	var tagName = 'deletepage';
	if ( mw.config.get( 'wgUserLanguage' ) === 'sv' ) {
		title = 'Radera sidan';
	}
	if ( templatedelete.length && !templatehangon.length ) {
		comment = templatedelete.find( '.radera-kommentar' ).first();
		if ( comment.length ) {
			if ( comment.find( 'a' ).length === 1 ) {
				html = $( '.radera-kommentar' ).html();
				if ( frag.test( html ) ) {
					commenttext = html.replace( frag, function( match, p1, p2, p3, offset, string ) {
						var decodedp1 = decodeURIComponent( p1 );
						var prettifiedDecodedp1 = decodedp1.replace( /_/g, ' ' );
						var prettifiedp2 = p2.replace( /_/g, ' ' );
						if ( prettifiedDecodedp1 + '#' + prettifiedp2 === p3 ) {
							return '[[' + p3 + ']]';
						}
						return '[[' + prettifiedDecodedp1 + '#' + prettifiedp2 + '|' + p3 + ']]';
					} );
				} else {
					commenttext = html.replace( noFrag, function( match, p1, p2, offset, string ) {
						var decodedp1 = decodeURIComponent( p1 );
						var prettifiedDecodedp1 = decodedp1.replace( /_/g, ' ' );
						if ( prettifiedDecodedp1 === p2 ) {
							return '[[' + p2 + ']]';
						}
						return '[[' + prettifiedDecodedp1 + '|' + p2 + ']]';
					} );
				}
			} else {
				commenttext = comment.text();
			}
			if ( commenttext ) {
				obj.reason = 'Snabbradering med motivering: ' + commenttext;
			}
		}

        if ( mw.config.get( 'skin' ) === 'vector-2022' ) {
		    $( '.mw-watchlink' ).first().after( '<li id="gadget-deletepage" class="mw-list-item"><a href="#" title="' + title + '"><img src="//upload.wikimedia.org/wikipedia/commons/a/a7/Trash_Can.svg" height="20" class="mw-ui-button mw-ui-icon mw-ui-quiet mw-ui-icon-element"></a></li>' );
        } else {
		    $( '.mw-watchlink' ).first().after( '<li id="gadget-deletepage" class="mw-list-item"><a href="#" title="' + title + '"><img src="//upload.wikimedia.org/wikipedia/commons/a/a7/Trash_Can.svg" height="20"></a></li>' );
        }

		$( '#gadget-deletepage' ).find( 'a' ).click( function( e ) {
			e.preventDefault();
			var api = new mw.Api();
			function deletePage() {
				api.postWithToken( 'csrf', obj ).done( function() {
					location.reload();
				} );
			}
			api.get( {
				action: 'query',
				list: 'tags',
				tglimit: 'max',
				tgprop: [
					'active',
					'defined',
					'source'
				],
				formatversion: 2
			} ).done( function( tagsres ) {
				var query = tagsres.query;
				var tags;
				function hasTag( tagobj ) {
					return tagobj.name === tagName && tagobj.defined && tagobj.active && tagobj.source.indexOf( 'manual' ) !== -1;
				}
				if ( query ) {
					tags = query.tags;
					if ( tags && Array.isArray( tags ) ) {
						if ( tags.some( hasTag ) ) {
							obj.tags = tagName;
						}
					}
				}
				deletePage();
			} ).fail( function() {
				deletePage();
			} );
		} );
	}
} );