Järjestelmäviesti:Gadget-personalSandbox.js

Huomautus: Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.

  • Firefox ja Safari: Napsauta Shift-näppäin pohjassa Päivitä, tai paina Ctrl-F5 tai Ctrl-R (⌘-R Macilla)
  • Google Chrome: Paina Ctrl-Shift-R (⌘-Shift-R Macilla)
  • Internet Explorer ja Edge: Napsauta Ctrl-näppäin pohjassa Päivitä tai paina Ctrl-F5
  • Opera: Paina Ctrl-F5.
/**
 * Add a "My sandbox" link to the personal portlet menu.
 *
 * Required modules: mediawiki.util, mediawiki.Title, mediawiki.Uri
 *
 * @source https://www.mediawiki.org/wiki/Snippets/MySandbox
 * @version 2014-07-16
 */
( function ( mw, $ ) {
	
	$( function () {
			function copy_page_to_sandbox()
	{
		OO.ui.confirm( conf.confirmMessage ).done( function ( confirmed ) {
			if (confirmed === true) {
				var rev_id = mw.config.get("wgRevisionId");
				var wgPageName = mw.config.get("wgPageName");
				var wgArticleId = mw.config.get("wgArticleId");		
				
				if (rev_id===0)
				{
					// Miksi jossain sivuilla tuoreimmassa versiossa wgRevisionId = 0 ?
					rev_id = mw.config.get("wgCurRevisionId")
				}
				if (rev_id===0)
				{
					alert(conf.copyErrorMessage);
				}
				var url="//fi.wikipedia.org/w/api.php?format=json&action=query&prop=revisions&rvprop=timestamp|user|comment|content&revids=" + rev_id;
				$.getJSON(url, function(data) {
		
		            if (data && data.query && data.query.pages) {
		            	var sandbox_title_tmp="User:" + mw.user.getName() + "/" + conf.subpageName;
		            	content=data.query.pages[wgArticleId].revisions[0]['*'];
		            	content=content.replace(/\[\[([Ll]uokka|[Cc]ategory) ?:/g, '[[:$1:');
		            	content="{{Hiekkalaatikkoni}}\n<!-- Tee muokkaukset tämän rivin alapuolelle -->\n" + content;
		            	summary=conf.copySummary;
		            	summary=summary.replace("%PAGE_TITLE%", wgPageName.replace(/_/g, " "));
		            	summary=summary.replace("%REV_ID%", rev_id);
		            	summary=summary.replace("%SANDBOX_TITLE%",  sandbox_title_tmp);
		            	api = new mw.Api();
		            	api.post({
		                            'action': 'edit',
		                            'title': sandbox_title_tmp,
		                            'token': mw.user.tokens.get('csrfToken'),
		                            'text': content,
		                            'summary': summary
		                        }).done(function(status) {
		                        		if (typeof(status) !== "undefined"
		                        			&& typeof(status.edit) !== "undefined"
		                        			&& typeof(status.edit.result) !== "undefined"
		                        			)
		                        			{
		                        				if (status.edit.result === "Success")
		                        				{
		                        					OO.ui.alert( conf.copyOkMessage);
		                        				}
		                        				else
		                        				{
			                        				alert(JSON.stringify(status));	
		                        				}
		                        			}
		                        			else
		                        			{
		                        				alert(JSON.stringify(status));	
		                        			}
		                        			
                                                

//		                        	
		                });
		            }
		      });
			}
		});
	}
		
		var conf, title, url;

		// Customize/Translate this to your needs
		conf = {
			subpageName: 'hiekkalaatikko',
			portletLabel: 'Hiekkalaatikko',
			portletTooltip: 'Oma hiekkalaatikko',
			portletLabelAdd: '[+]',
			portletTooltipAdd: 'Tallenna kopio tästä sivusta hiekkalaatikkoon',
			confirmMessage: 'Kopioidaanko sivu hiekkalaatikkoosi?',
			editintroPagename: 'Template:hiekkalaatikkoni',
			preloadPagename: 'Malline:Hiekkalaatikkoni/preload',
			copyErrorMessage: 'Sivua ei voitu kopioida',
			copyOkMessage: 'Sivu kopioitiin hiekkalaatikkoosi.',
			copySummary: 'Kopioidaan sivu [[%PAGE_TITLE%]] (rev id: %REV_ID%) käyttäjän [[%SANDBOX_TITLE%|hiekkalaatikkoon]]. '
		};
		// Don't alter the code below

		// Use Special:MyPage (as opposed to mw.user.getName()) so that it
		// works for logged-out users as well.
		sandbox_title = new mw.Title( 'Special:MyPage/' + conf.subpageName );
		url = new mw.Uri( sandbox_title.getUrl() );
		url.extend( {
//			action: 'edit',
//			editintro: new mw.Title( conf.editintroPagename ),
			preload: new mw.Title( conf.preloadPagename )
		} );
		mw.util.addPortletLink(
			'p-personal',
			url,
			conf.portletLabel,
			'pt-sandbox',
			conf.portletTooltip,
			null,
			'#pt-preferences'
		);
		if (mw.config.get("wgNamespaceNumber") > -1)
		{
			if (mw.config.get("wgTitle") !== mw.config.get("wgUserName") + "/" +conf.subpageName)
			{
				var link=$("<a/>");
				link.text(conf.portletLabelAdd);
				link.attr('title', conf.portletTooltipAdd);
				link.css('padding-left', '0.1em');
				link.click(copy_page_to_sandbox);
				$("#pt-sandbox").append(link);
			}
		}
	} );
}( mediaWiki, jQuery ) );