User:DannyS712/Tag.js

/* _____________________________________________________________________________ * |                                                                             | * |                    === WARNING: GLOBAL GADGET FILE ===                      | * |                 Changes to this page affect many users. | * | Please discuss changes on the talk page or on WT:Gadget before editing. | * |_____________________________________________________________________________| * * Easily tag a page with a specific template, and send a message to the page's creator * Revision: 2.1 * Author: w:en:User:DannyS712 */ // $(function {

//Script-wide configuration information var Tag_config = { name: 'Tag', version: 2.1, //Only change the debug statements, not the name or version debug: false, debug_all: false };

//Site configuration. The first 4 parameters set up the option to activate the script. //The last parameter (config_file) establishes the JSON page that contains the remaining configuration features var Tag_settings = { portlet_location: 'p-cactions', portlet_text: 'A. Curto', portlet_id: 'ca-Tag', portlet_tooltip: 'A. Curto', config_file: 'MediaWiki:Gadget-Marcadorcurtos.json', help_page: 'Wikipedia:Marcador de artigos curtos' };

//DO NOT CHANGE ANYTHING BELOW THIS LINE var Tag_page = {}; var scriptUrl = mw.config.get( 'wgScriptPath' ) + '/api.php'; var summary_post = ' - ' + Tag_config.name + ' (v. ' + Tag_config.version + ') (' + Tag_settings.help_page + ')';

mw.loader.using( 'mediawiki.util', function {    $(document).ready( function  { mw.util.addPortletLink ( Tag_settings.portlet_location, 'javascript:void(0)', Tag_settings.portlet_text, Tag_settings.portlet_id, Tag_settings.portlet_tooltip); $('#' + Tag_settings.portlet_id).on('click', function {       	Tag;    	} ); } ); } ); function Tag{ var page = mw.config.get('wgPageName').replace(/_/g, ' '); set_up( page ); var new_content = Tag_page.template + get_page( page ); set_page( page, new_content, Tag_page.page_summary); addNewSectionTo( Tag_page.section_heading, Tag_page.user_talk_section, Tag_page.user_talk_summary, Tag_page.user_talk_page ); } function set_up( page ){ var config = get_JSON( Tag_settings.config_file ); Tag_page.page = page; Tag_page.template = '\n'; Tag_page.page_summary = config.page_summary + summary_post; Tag_page.user_talk_page = config.user_talk_ns + ':' + get_creator ( page ); Tag_page.user_talk_summary = config.user_talk_section_summary_part_1 +  + page +  + config.user_talk_section_summary_part_2 + summary_post; Tag_page.user_talk_section = config.user_talk_section_message_part_1 +  + page +  + config.user_talk_section_message_part_2; Tag_page.section_heading = config.user_talk_section_heading; if (Tag_page.section_heading == 'PAGE_NAME') Tag_page.section_heading = page; if (Tag_config.debug) console.log( Tag_page ); } function get_JSON ( page ){ var JSONed = JSON.parse( get_page( page ) ); if (Tag_config.debug_all) console.log( JSONed ); return JSONed; } function get_page( name ){ var page_to_get = { action: 'query', titles: name, prop: 'revisions', rvprop: 'content', format: 'json', formatversion: 2 };   var result = null; $.ajax({		url: scriptUrl,		type: 'get',		data: page_to_get,		dataType: 'json',		async: false,		success: function(page) {			if (Tag_config.debug_all) console.log( page );	   	result = page.query.pages["0"].revisions["0"].content;	    	if (Tag_config.debug_all) console.log( result );		} 	}); return result; } function set_page ( page, new_content, pg_summary ){ if (Tag_config.debug_all) console.log( page, new_content ); var to_send = { action: 'edit', title: page, text: new_content, summary: pg_summary, token: mw.user.tokens.get( 'csrfToken' ) };   if (Tag_config.debug) console.log( to_send ); $.when(       $.post( scriptUrl, to_send, function( response ){ } )    ).done( function { location.reload; } ); } function addNewSectionTo( section_title, content, summary, target) { $.ajax({       url: scriptUrl,        data: {            format: 'json',            action: 'edit',            title: target,            section: 'new',            sectiontitle: section_title,            summary: summary,            text: content,            token: mw.user.tokens.get( 'csrfToken' )        },        dataType: 'json',        type: 'POST',        success: function( data ) {            if		( data && data.edit && data.edit.result == 'Success' ) { if (Tag_config.debug) console.log ('Section added'); }            else if ( data && data.error )	{ alert( 'Error: API returned error code "' + data.error.code + '": ' + data.error.info ); }            else	{ alert( 'Error: Unknown result from API.' ); }        },        error: function( xhr ) { alert( 'Error: Request failed.' ); }    }); } function get_creator ( page ){ var get_req = { action: 'query', titles: page, prop: 'revisions', rvprop: 'user', rvdir: 'newer', rvlimit: 1, format: 'json', formatversion: 2 };   var result = null; $.ajax({		url: scriptUrl,		type: 'get',		data: get_req,		dataType: 'json',		async: false,		success: function(data) {			if (Tag_config.debug_all) console.log ( data );			result = data.query.pages[0].revisions[0].user;			if (Tag_config.debug) console.log(result);		} 	}); return result; } }); //