MediaWiki:Gadget-CropTool.js

// CropTool code begins, see [[Commons:CropTool]] for details
'use strict';
var title = mw.config.get('wgTitle');
if (mw.config.get('wgNamespaceNumber') === 6 &&
	mw.config.get('wgIsArticle') &&
	/(PNG|GIF|JPE?G|DJVU|PDF|TIF?F|WEBP|SVG)$/i.test(title) &&
	document.getElementById('file')) {
	$(function () {
		var url = new URL('https://croptool2.toolforge.org/');
		url.searchParams.set('title', title.replace(/ /g, '_'));
		var page = mw.util.getParamValue('page');
		if (page) {
			url.searchParams.set('page', page);
		}
		if (mw.config.get('wgDBname') !== 'commonswiki') {
			url.searchParams.set('site', mw.config.get('wgServer').replace(/^\/\//, ''));
		}
		var link = mw.util.addPortletLink(
			'p-tb',
			url.toString(),
			'CropTool2',
			't-crop',
			'Crop this image on CropTool2'
		);

		if (link) {
			$('a', link).prepend(
				'<span style="display:inline-flex;align-items:center;margin-inline-end:4px">' +
				'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" style="fill:currentColor">' +
				'<path d="M9 19H7v-2h2zm4 0h-2v-2h2zm4 0h-2v-2h2zm2-2h-2v-2h2zM10 0a3 3 0 1 1 0 6 3 3 0 0 1-1-.175V7h6v2H9v6H7V9H5.826A3 3 0 1 1 3 7h4V3a3 3 0 0 1 3-3M3 9a1 1 0 1 0 0 2 1 1 0 0 0 0-2m7-7a1 1 0 1 0 0 2 1 1 0 0 0 0-2m9 11h-2v-2h2zm0-4h-2V7h2z"/>' +
				'</svg></span>'
			);
		}
	});
}