User:Synoman Barris/common.js: Difference between revisions

From TestWiki
Content added Content deleted
No edit summary
No edit summary
Line 1: Line 1:
//<nowiki>
MakeRollbacker = function(name)
$(function() {
{
var namespace = mw.config.get('wgNamespaceNumber'),
if (typeof(MakeRollbackerConfig) == "undefined") MakeRollbackerConfig = {};
pageName = mw.config.get('wgPageName'),
var groupReason = MakeRollbackerConfig.groupReason || "Trusted user";
myUserName = mw.config.get('wgUserName'),
var sectionHeader = MakeRollbackerConfig.sectionHeader || "Rollback";
userName = mw.config.get('wgRelevantUserName'),
var sectionBody = MakeRollbackerConfig.sectionBody || ("{{subst:"+"User:HJ Mitchell/Rollback}}~~"+"~~");
templateName = "uw-spamublock",
var user;
blockReason,
api;
var user = (mw.config.get('wgTitle').indexOf('/') != -1) ? (mw.config.get('wgTitle').split('/')[0]) : mw.config.get('wgTitle');
var eUser = encodeURIComponent(user.replace(/ /g, "_"));
jsMsg("Getting tokens");
var req = sajax_init_object();
req.open("GET", mw.config.get('wgScriptPath') + "/api.php?format=json&action=query&list=users&ustoken=userrights&ususers="+eUser+"&prop=info&intoken=edit&indexpageids&titles=User%20talk:"+eUser, false);
req.send("format=json&action=userrights&user=" + eUser + "&add=rollbacker&bot=1&reason=" + encodeURIComponent(groupReason) + "&token=" + encodeURIComponent(userrightstoken));
var info = eval("(" + req.responseText + ")");
if (info.error)
{
jsMsg("Error when getting the tokens");
return false;
}
var userrightstoken = info.query.users[0].userrightstoken;
var edittoken = info.query.pages[info.query.pageids[0]].edittoken;


if([0,2,3].indexOf(namespace) !== -1) {
jsMsg("Setting bit");
mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ] ).done( function() {
api = new mw.Api();
mw.util.addPortletLink(
'p-cactions', 'javascript:void(0)',
'{{spamublock}}', 'ca-spamublock', 'Delete user page and execute {{uw-spamublock}} on current user'
);
} );


$('#ca-spamublock').on('click', function() {
var req = sajax_init_object();
if (confirm('This script will delete the current user page, block the relevant user or page creator as {{uw-spamublock}} and leave that template on their talk page, or the template specified at [[Special:MyPage/uw-spamublock]], if present.\n\nARE YOU SURE YOU WANT TO PROCEED?')) {
var postdata = "format=json&action=userrights&user=" + eUser + "&add=rollbacker&token=" + encodeURIComponent(userrightstoken)+"&reason=" + encodeURIComponent(groupReason);
$('#ca-spamublock').text('Please wait...');
req.open("POST", mw.config.get('wgScriptPath') + "/api.php", true);
if(!userName) {
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
api.get({
req.setRequestHeader("Content-length", postdata.length);
action: 'query',
req.onreadystatechange = function()
prop: 'revisions',
{
titles: pageName,
if(req.readyState == 4 && req.status == 200)
{
rvdir: 'newer',
rvlimit: '1',
var info = eval("(" + req.responseText + ")");
rvprop: 'user'
if (info.error)
}).then(function(data) {
{
var pages = data.query.pages;
jsMsg("Error when setting the group on "+user);
userName = pages[Object.keys(pages)[0]].revisions[0].user;
return false;
}
getTemplate();
});
} else {
if (info.userrights.added.length==0)
{
getTemplate();
}
jsMsg("User already is in the Rollbacker group");
return false;
}
}
});
}


function getTemplate() {
jsMsg("Notifying user");
api.get({
action: 'query',
titles: 'User:'+myUserName+'/uw-spamublock'
}).then(function(data) {
var query = data.query.pages;
if(Object.keys(query)[0] > 0) {
templateName = 'User:'+myUserName+'/uw-spamublock';
} else {
templateName += "|sig=yes";
}
templateName = "{{subst:"+templateName+"}}";
deleteUserPage();
});
}
function getBlockReason() {
api.get({
action: 'query',
titles: 'User:'+myUserName+'/spamublock-message'
}).then(function(data) {
var query = data.query.pages;
if(Object.keys(query)[0] > 0) {
blockReason = '{{User:'+myUserName+'/spamublock-message}}';
} else {
blockReason = '{{uw-spamublock}} <!-- Promotional username, promotional edits -->';
}
blockUser();
});
}


function deleteUserPage() {
var req2 = sajax_init_object();
api.postWithToken("delete", {
var postdata2 = "format=json&action=edit&title=User_talk:" + eUser + "&section=new&notminor=1&summary=" + encodeURIComponent(sectionHeader) + "&text="+encodeURIComponent(sectionBody)+"&token=" + encodeURIComponent(edittoken);
action: 'delete',
req2.open("POST", mw.config.get('wgScriptPath') + "/api.php", true);
reason: '[[WP:G11|G11]]: Unambiguous [[WP:NOTADVERTISING|advertising]] or promotion',
req2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
title: pageName
req2.setRequestHeader("Content-length", postdata2.length);
req2.onreadystatechange = function()
}).then(function(deleteData) {
$("#mw-content-text").html(
{
"<p><b>Deleted</b> page <a href='"+mw.util.getUrl(pageName)+"'>"+pageName+"</a> <i>(<a href='"+mw.util.getUrl('WP:G11')+"'>G11</a>: Unambiguous <a href='"+mw.util.getUrl('WP:NOTADVERTISING')+"'>advertising</a> or promotion)</i></p>"
if(req2.readyState == 4 && req2.status == 200)
{
);
getBlockReason();
var info = eval("(" + req2.responseText + ")");
if (info.error)
},function(error) {
$("#mw-content-text").html(
{
jsMsg("Error when setting the group on "+user);
"<p><b>Error</b> deleting page "+pageName+": "+error+"</p>"
);
return false;
}
});
}
jsMsg("Done making "+user+" a Rollbacker");

}
function blockUser() {
};
api.postWithToken("block", {
req2.send(postdata2);
}
action: 'block',
allowusertalk: true,
};
autoblock: true,
req.send(postdata);
nocreate: true,
}
reason: blockReason,
user: userName
if( mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3 )
}).then(function(blockData) {
{
$("#mw-content-text").append(
addOnloadHook(function(){addPortletLink( "p-cactions", "javascript:MakeRollbacker()", (typeof(MakeRollbackerConfig)!="undefined"&&MakeRollbackerConfig.portletTitle)||"+rollback", "portlet-make-rollbacker");});
"<p><b>Blocked</b> <a href='"+mw.util.getUrl('User:'+userName)+"'>"+userName+"</a> (account creation blocked) with an expiry time of indefinite <i>(<span id='spamublock-blocked-reason'></span>)</i></p>"
}
);
$('<span/>').text(blockReason).appendTo("#spamublock-blocked-reason");
templateUser();
}, function(error) {
$("#mw-content-text").append(
"<p><b>Error</b> blocking <a href='"+mw.util.getUrl('User:'+userName)+"'>"+userName+"</a>: "+error+"</p>"
);
});
}

function templateUser() {
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
d = new Date();

api.postWithToken( "edit", {
action: "edit",
section: 'new',
sectiontitle: monthNames[d.getMonth()] + ' ' + d.getFullYear(),
summary: "You have been indefinitely blocked from editing because your account is being used only for [[WP:SPAM|spam or advertising]] and your username is a violation of the [[WP:U|username policy]]. (using [[User:MusikAnimal/spamublock|spamublock.js]])",
text: "\n"+templateName,
title: "User talk:"+userName
}).then(function(editData) {
$("#mw-content-text").append(
"<p><b>Edited</b> <a href='"+mw.util.getUrl('User talk:'+userName)+"'>User talk:"+userName+"</a>: Created new section with template "+templateName+"</p>" +
"<p><b>Complete (<a href='javascript:document.location.reload()'>reload</a>)</b></p>"
);
},function(error) {
$("#mw-content-text").append(
"<p><b>Error</b> editing <a href='"+mw.util.getUrl('User talk:'+userName)+"'>User talk:"+userName+"</a>: "+error+"</p>"
);
});
}
});
//</nowiki>

Revision as of 14:15, 5 March 2022

//<nowiki>
$(function() {
  var namespace = mw.config.get('wgNamespaceNumber'),
    pageName = mw.config.get('wgPageName'),
    myUserName = mw.config.get('wgUserName'),
    userName = mw.config.get('wgRelevantUserName'),
    templateName = "uw-spamublock",
    blockReason,
    api;

  if([0,2,3].indexOf(namespace) !== -1) {
  	mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ] ).done( function() {
  		api = new mw.Api();
	    mw.util.addPortletLink(
	      'p-cactions', 'javascript:void(0)',
	        '{{spamublock}}', 'ca-spamublock', 'Delete user page and execute {{uw-spamublock}} on current user'
	    );
	} );

    $('#ca-spamublock').on('click', function() {
      if (confirm('This script will delete the current user page, block the relevant user or page creator as {{uw-spamublock}} and leave that template on their talk page, or the template specified at [[Special:MyPage/uw-spamublock]], if present.\n\nARE YOU SURE YOU WANT TO PROCEED?')) {
        $('#ca-spamublock').text('Please wait...');
        if(!userName) {
        	api.get({
		      action: 'query',
		      prop: 'revisions',
		      titles: pageName,
		      rvdir: 'newer',
		      rvlimit: '1',
		      rvprop: 'user'
		    }).then(function(data) {
		      var pages = data.query.pages;
		      userName = pages[Object.keys(pages)[0]].revisions[0].user;
		      getTemplate();
		    });
        } else {
	        getTemplate();
        }
      }
    });
  }

  function getTemplate() {
    api.get({
      action: 'query',
      titles: 'User:'+myUserName+'/uw-spamublock'
    }).then(function(data) {
      var query = data.query.pages;
      if(Object.keys(query)[0] > 0) {
        templateName = 'User:'+myUserName+'/uw-spamublock';
      } else {
        templateName += "|sig=yes";
      }
      templateName = "{{subst:"+templateName+"}}";
      deleteUserPage();
    });
  }
  
  function getBlockReason() {
  	api.get({
      action: 'query',
      titles: 'User:'+myUserName+'/spamublock-message'
    }).then(function(data) {
      var query = data.query.pages;
      if(Object.keys(query)[0] > 0) {
        blockReason = '{{User:'+myUserName+'/spamublock-message}}';
      } else {
      	blockReason = '{{uw-spamublock}} <!-- Promotional username, promotional edits -->';
      }
      blockUser();
    });
  }

  function deleteUserPage() {
    api.postWithToken("delete", {
      action: 'delete',
      reason: '[[WP:G11|G11]]: Unambiguous [[WP:NOTADVERTISING|advertising]] or promotion',
      title: pageName
    }).then(function(deleteData) {
      $("#mw-content-text").html(
        "<p><b>Deleted</b> page <a href='"+mw.util.getUrl(pageName)+"'>"+pageName+"</a> <i>(<a href='"+mw.util.getUrl('WP:G11')+"'>G11</a>: Unambiguous <a href='"+mw.util.getUrl('WP:NOTADVERTISING')+"'>advertising</a> or promotion)</i></p>"
      );
      getBlockReason();
    },function(error) {
      $("#mw-content-text").html(
        "<p><b>Error</b> deleting page "+pageName+": "+error+"</p>"
      );
    });
  }

  function blockUser() {
    api.postWithToken("block", {
      action: 'block',
      allowusertalk: true,
      autoblock: true,
      nocreate: true,
      reason: blockReason,
      user: userName
    }).then(function(blockData) {
      $("#mw-content-text").append(
        "<p><b>Blocked</b> <a href='"+mw.util.getUrl('User:'+userName)+"'>"+userName+"</a> (account creation blocked) with an expiry time of indefinite <i>(<span id='spamublock-blocked-reason'></span>)</i></p>"
      );
      $('<span/>').text(blockReason).appendTo("#spamublock-blocked-reason");
      templateUser();
    }, function(error) {
      $("#mw-content-text").append(
        "<p><b>Error</b> blocking <a href='"+mw.util.getUrl('User:'+userName)+"'>"+userName+"</a>: "+error+"</p>"
      );
    });
  }

  function templateUser() {
    var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
      d = new Date();

    api.postWithToken( "edit", {
      action: "edit",
      section: 'new',
      sectiontitle: monthNames[d.getMonth()] + ' ' + d.getFullYear(),
      summary: "You have been indefinitely blocked from editing because your account is being used only for [[WP:SPAM|spam or advertising]] and your username is a violation of the [[WP:U|username policy]]. (using [[User:MusikAnimal/spamublock|spamublock.js]])",
      text: "\n"+templateName,
      title: "User talk:"+userName
    }).then(function(editData) {
      $("#mw-content-text").append(
        "<p><b>Edited</b> <a href='"+mw.util.getUrl('User talk:'+userName)+"'>User talk:"+userName+"</a>: Created new section with template "+templateName+"</p>" +
        "<p><b>Complete (<a href='javascript:document.location.reload()'>reload</a>)</b></p>"
      );
    },function(error) {
      $("#mw-content-text").append(
        "<p><b>Error</b> editing <a href='"+mw.util.getUrl('User talk:'+userName)+"'>User talk:"+userName+"</a>: "+error+"</p>"
      );
    });
  }
});
//</nowiki>