<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.geministation.com/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-cvuform-core.js</id>
	<title>MediaWiki:Gadget-cvuform-core.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.geministation.com/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-cvuform-core.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=MediaWiki:Gadget-cvuform-core.js&amp;action=history"/>
	<updated>2026-06-04T04:47:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.geministation.com/index.php?title=MediaWiki:Gadget-cvuform-core.js&amp;diff=6238&amp;oldid=prev</id>
		<title>Banri: Created page with &quot;/**&lt;nowiki&gt; * Adds a &#039;Report a vandal&#039; button to the CVU page *  * This gadget is enabled on mobile. Please make sure that any code used here * also works on mobile. */ var co...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=MediaWiki:Gadget-cvuform-core.js&amp;diff=6238&amp;oldid=prev"/>
		<updated>2020-06-18T05:24:39Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;span class=&quot;autocomment&quot;&gt;*&amp;lt;nowiki&amp;gt; * Adds a &amp;#039;Report a vandal&amp;#039; button to the CVU page *  * This gadget is enabled on mobile. Please make sure that any code used here * also works on mobile.: &lt;/span&gt; var co...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&amp;lt;nowiki&amp;gt;&lt;br /&gt;
* Adds a &amp;#039;Report a vandal&amp;#039; button to the CVU page&lt;br /&gt;
* &lt;br /&gt;
* This gadget is enabled on mobile. Please make sure that any code used here&lt;br /&gt;
* also works on mobile.&lt;br /&gt;
*/&lt;br /&gt;
var conf = mw.config.get([&lt;br /&gt;
    &amp;#039;wgArticlePath&amp;#039;,&lt;br /&gt;
    &amp;#039;wgPageName&amp;#039;,&lt;br /&gt;
    &amp;#039;wgScriptPath&amp;#039;,&lt;br /&gt;
    &amp;#039;wgRestrictionEdit&amp;#039;,&lt;br /&gt;
    &amp;#039;wgUserGroups&amp;#039;,&lt;br /&gt;
    &amp;#039;wgScript&amp;#039;&lt;br /&gt;
]);&lt;br /&gt;
&lt;br /&gt;
function showSuccess() {&lt;br /&gt;
	OO.ui.alert( &amp;#039;Thanks for your submission. The page will now be reloaded.&amp;#039; ).done( function () {&lt;br /&gt;
	    document.location.replace(conf.wgArticlePath.replace(&amp;#039;$1&amp;#039;, conf.wgPageName));&lt;br /&gt;
	} );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function showError(msg) {&lt;br /&gt;
	OO.ui.alert( msg );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function callAPI(data, method, callback) {&lt;br /&gt;
	data[&amp;#039;format&amp;#039;] = &amp;#039;json&amp;#039;;&lt;br /&gt;
	$.ajax({&lt;br /&gt;
		data: data,&lt;br /&gt;
		dataType: &amp;#039;json&amp;#039;,&lt;br /&gt;
		url: conf.wgScriptPath + &amp;#039;/api.php&amp;#039;,&lt;br /&gt;
		type: method,&lt;br /&gt;
		success: function(response) {&lt;br /&gt;
			if (response.error)&lt;br /&gt;
				showError(&amp;#039;API error: &amp;#039; + response.error.info);&lt;br /&gt;
			else &lt;br /&gt;
				callback(response);&lt;br /&gt;
		},&lt;br /&gt;
		error: function(xhr, error) { showError(&amp;#039;AJAX error: &amp;#039; + error); }&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function cvuSubmit(editor) {&lt;br /&gt;
	callAPI({&lt;br /&gt;
		&amp;#039;action&amp;#039;: &amp;#039;query&amp;#039;,&lt;br /&gt;
		&amp;#039;prop&amp;#039;: &amp;#039;info|revisions&amp;#039;,&lt;br /&gt;
		&amp;#039;intoken&amp;#039;: &amp;#039;edit&amp;#039;,&lt;br /&gt;
		&amp;#039;titles&amp;#039;: conf.wgPageName,&lt;br /&gt;
		&amp;#039;rvprop&amp;#039;: &amp;#039;content&amp;#039;,&lt;br /&gt;
		&amp;#039;rvlimit&amp;#039;: &amp;#039;1&amp;#039;,&lt;br /&gt;
		&amp;#039;indexpageids&amp;#039;: &amp;#039;true&amp;#039;,&lt;br /&gt;
	}, &amp;#039;GET&amp;#039;, function(response) {&lt;br /&gt;
		var page = response.query.pages[response.query.pageids[0]];&lt;br /&gt;
		var content = page.revisions[0][&amp;#039;*&amp;#039;];&lt;br /&gt;
                    var template = &amp;#039;\{\{cvuid\|insert vandal\}\}&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
		if (content.match(template) === null) &lt;br /&gt;
			showError(&amp;#039;An error occurred.&amp;#039;);&lt;br /&gt;
                    content = content.replace(template, &amp;#039;{&amp;#039; + &amp;#039;{cvuid|&amp;#039; + editor + &amp;#039;}&amp;#039; + &amp;#039;}&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		callAPI({&lt;br /&gt;
			&amp;#039;minor&amp;#039;: &amp;#039;yes&amp;#039;,&lt;br /&gt;
			&amp;#039;summary&amp;#039;: &amp;#039;Reported new user: [&amp;#039; + &amp;#039;[Special:Contributions/&amp;#039; + editor + &amp;#039;|&amp;#039; + editor + &amp;#039;]&amp;#039; + &amp;#039;]&amp;#039;,&lt;br /&gt;
			&amp;#039;action&amp;#039;: &amp;#039;edit&amp;#039;,&lt;br /&gt;
			&amp;#039;title&amp;#039;: conf.wgPageName,&lt;br /&gt;
			&amp;#039;basetimestamp&amp;#039;: page.revisions[0].timestamp,&lt;br /&gt;
			&amp;#039;startimestamp&amp;#039;: page.starttimestamp,&lt;br /&gt;
			&amp;#039;token&amp;#039;: page.edittoken,&lt;br /&gt;
			&amp;#039;text&amp;#039;: content&lt;br /&gt;
		}, &amp;#039;POST&amp;#039;, function(response) {&lt;br /&gt;
			if (response.edit.result == &amp;#039;Success&amp;#039;)&lt;br /&gt;
				showSuccess();&lt;br /&gt;
			else &lt;br /&gt;
				showError(&amp;#039;An error occurred while submitting the edit.&amp;#039;);&lt;br /&gt;
		});&lt;br /&gt;
	});&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if(conf.wgPageName==&amp;#039;GSWiki:Counter-Vandalism_Unit&amp;#039;) {&lt;br /&gt;
	var $div = $(&amp;#039;#cvu_guide&amp;#039;);&lt;br /&gt;
	var $p = $(&amp;#039;&amp;lt;p /&amp;gt;&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	var ppLink = &amp;#039;Due to vandalism, this page has been &amp;lt;a href=&amp;quot;&amp;#039; + conf.wgArticlePath.replace(&amp;#039;$1&amp;#039;, &amp;#039;GS:PP&amp;#039;) + &amp;#039;&amp;quot;&amp;gt;protected&amp;lt;/a&amp;gt; from editing.&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	if ($.inArray(&amp;#039;sysop&amp;#039;, conf.wgRestrictionEdit) &amp;gt; -1 &amp;amp;&amp;amp; $.inArray(&amp;#039;sysop&amp;#039;, conf.wgUserGroups) == -1)&lt;br /&gt;
		$p.append($(&amp;#039;&amp;lt;p /&amp;gt;&amp;#039;).append(ppLink + &amp;#039; Please &amp;lt;a href=&amp;quot;&amp;#039; + conf.wgArticlePath.replace(&amp;#039;$1&amp;#039;, &amp;#039;GS:AR&amp;#039;) + &amp;#039;&amp;quot;&amp;gt;contact an administrator&amp;lt;/a&amp;gt;.&amp;#039;));&lt;br /&gt;
	else if ($.inArray(&amp;#039;autoconfirmed&amp;#039;, conf.wgRestrictionEdit) &amp;gt; -1 &amp;amp;&amp;amp; $.inArray(&amp;#039;autoconfirmed&amp;#039;, conf.wgUserGroups) == -1)&lt;br /&gt;
		$p.append($(&amp;#039;&amp;lt;p /&amp;gt;&amp;#039;).append(ppLink + &amp;#039; Please &amp;lt;a href=&amp;quot;&amp;#039; + conf.wgScript + &amp;#039;?title=Special:UserLogin&amp;amp;returnto=&amp;#039; + conf.wgPageName + &amp;#039;&amp;quot;&amp;gt;log in&amp;lt;/a&amp;gt; to report users.&amp;#039;));&lt;br /&gt;
	else {&lt;br /&gt;
		var button = new OO.ui.ButtonWidget( {&lt;br /&gt;
			label: &amp;#039;Report a vandal&amp;#039;,&lt;br /&gt;
			icon: &amp;#039;alert&amp;#039;,&lt;br /&gt;
			title: &amp;#039;Reports a new vandal to the CVU&amp;#039;&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		$p.append(button.$element&lt;br /&gt;
            .click(function () {&lt;br /&gt;
				new OO.ui.prompt( &amp;#039;Enter a username&amp;#039;, { textInput: { placeholder: &amp;#039;Username&amp;#039; } } ).done( function ( result ) {&lt;br /&gt;
				    if ( result !== null &amp;amp;&amp;amp; result !== &amp;#039;&amp;#039; ) {&lt;br /&gt;
				        cvuSubmit(result);&lt;br /&gt;
				    }&lt;br /&gt;
				} );&lt;br /&gt;
        	})&lt;br /&gt;
		);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if ($div !== null)&lt;br /&gt;
		$div.empty().append($p);&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;span&amp;quot;).each(function() {&lt;br /&gt;
        var name = this.className;&lt;br /&gt;
        if(this.id == &amp;#039;cvu_remove&amp;#039; &amp;amp;&amp;amp; this.className != &amp;#039;insert vandal&amp;#039;) {&lt;br /&gt;
            var $img1 = $(&amp;quot;&amp;lt;img&amp;gt;&amp;quot;).attr(&amp;#039;src&amp;#039;, conf.wgArticlePath.replace(&amp;#039;$1&amp;#039;, &amp;#039;Special:FilePath/Yes_check.png&amp;#039;));&lt;br /&gt;
            $img1.attr(&amp;#039;width&amp;#039;, &amp;#039;15&amp;#039;).attr(&amp;#039;height&amp;#039;, &amp;#039;16&amp;#039;).attr(&amp;#039;title&amp;#039;, &amp;#039;Remove this user as blocked&amp;#039;).css(&amp;#039;cursor&amp;#039;, &amp;#039;pointer&amp;#039;);&lt;br /&gt;
            $img1.click(function() {&lt;br /&gt;
                removeUser(name.replace(/ /g,&amp;quot;_&amp;quot;).replace(/-/g,&amp;quot;.&amp;quot;), &amp;quot;blocked&amp;quot;);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            var $img2 = $(&amp;quot;&amp;lt;img&amp;gt;&amp;quot;).attr(&amp;#039;src&amp;#039;, conf.wgArticlePath.replace(&amp;#039;$1&amp;#039;, &amp;#039;Special:FilePath/X_mark.png&amp;#039;));&lt;br /&gt;
            $img2.attr(&amp;#039;width&amp;#039;, &amp;#039;15&amp;#039;).attr(&amp;#039;height&amp;#039;, &amp;#039;16&amp;#039;).attr(&amp;#039;title&amp;#039;, &amp;#039;Disregard this report&amp;#039;).css(&amp;#039;cursor&amp;#039;, &amp;#039;pointer&amp;#039;);&lt;br /&gt;
            $img2.click(function() {&lt;br /&gt;
                removeUser(name.replace(/ /g,&amp;quot;_&amp;quot;).replace(/-/g,&amp;quot;.&amp;quot;), &amp;quot;&amp;quot;);&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            $(this).append(&amp;quot;&amp;amp;nbsp;&amp;quot;).append($img1).append($img2);&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function removeUser(user, state) {&lt;br /&gt;
    var template = &amp;#039;\{\{cvuid\|&amp;#039; + user.split(&amp;quot;_&amp;quot;).join(&amp;quot; &amp;quot;) + &amp;#039;(\|.*?)?\}\}&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	callAPI({&lt;br /&gt;
		&amp;#039;action&amp;#039;: &amp;#039;query&amp;#039;,&lt;br /&gt;
		&amp;#039;prop&amp;#039;: &amp;#039;info|revisions&amp;#039;,&lt;br /&gt;
		&amp;#039;intoken&amp;#039;: &amp;#039;edit&amp;#039;,&lt;br /&gt;
		&amp;#039;titles&amp;#039;: conf.wgPageName,&lt;br /&gt;
		&amp;#039;rvprop&amp;#039;: &amp;#039;content&amp;#039;,&lt;br /&gt;
		&amp;#039;rvlimit&amp;#039;: &amp;#039;1&amp;#039;,&lt;br /&gt;
		&amp;#039;indexpageids&amp;#039;: &amp;#039;true&amp;#039;&lt;br /&gt;
	}, &amp;#039;GET&amp;#039;, function(response) {&lt;br /&gt;
		var page = response.query.pages[response.query.pageids[0]];&lt;br /&gt;
		var content = page.revisions[0][&amp;#039;*&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
		if (content.match(template) === null) {&lt;br /&gt;
			showError(&amp;#039;An error occurred.&amp;#039;);&lt;br /&gt;
            return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
        content = content.replace(&amp;#039;{&amp;#039; + &amp;#039;{cvuid|&amp;#039; + user.split(&amp;quot;_&amp;quot;).join(&amp;quot; &amp;quot;), &amp;#039;{&amp;#039; + &amp;#039;{cvuid|insert vandal}&amp;#039; + &amp;#039;}&amp;#039;);&lt;br /&gt;
        content = content.replace(/\}\}(\|.*?)?\}\}/, &amp;#039;}&amp;#039; + &amp;#039;}&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        var summary = &amp;#039;[&amp;#039; + &amp;#039;[Special:Contributions/&amp;#039; + user + &amp;#039;|&amp;#039; + user.split(&amp;quot;_&amp;quot;).join(&amp;quot; &amp;quot;) + &amp;#039;]&amp;#039; + &amp;#039;]&amp;#039;;&lt;br /&gt;
        if(state == &amp;quot;blocked&amp;quot;)&lt;br /&gt;
            summary += &amp;#039; has been blocked.&amp;#039;;&lt;br /&gt;
        else&lt;br /&gt;
            summary += &amp;#039; has not been blocked.&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
		callAPI({&lt;br /&gt;
			&amp;#039;minor&amp;#039;: &amp;#039;yes&amp;#039;,&lt;br /&gt;
			&amp;#039;summary&amp;#039;: summary,&lt;br /&gt;
			&amp;#039;action&amp;#039;: &amp;#039;edit&amp;#039;,&lt;br /&gt;
			&amp;#039;title&amp;#039;: conf.wgPageName,&lt;br /&gt;
			&amp;#039;basetimestamp&amp;#039;: page.revisions[0].timestamp,&lt;br /&gt;
			&amp;#039;startimestamp&amp;#039;: page.starttimestamp,&lt;br /&gt;
			&amp;#039;token&amp;#039;: page.edittoken,&lt;br /&gt;
			&amp;#039;text&amp;#039;: content&lt;br /&gt;
		}, &amp;#039;POST&amp;#039;, function(response) {&lt;br /&gt;
			if (response.edit.result != &amp;#039;Success&amp;#039;) &lt;br /&gt;
				showError(&amp;#039;An error occurred while submitting the edit.&amp;#039;);&lt;br /&gt;
            else &lt;br /&gt;
                document.location.replace(conf.wgArticlePath.replace(&amp;#039;$1&amp;#039;, conf.wgPageName));&lt;br /&gt;
		});&lt;br /&gt;
	});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Banri</name></author>
	</entry>
</feed>