User:Sphilbrick/vector.js

/*

 

Note: After saving, you have to bypass your browser's cache to see the changes.

To do this in Firefox/Mozilla/Safari: hold down Shift while clicking Reload,

or press Ctrl-Shift-R).

If you use Internet Explorer: press Ctrl-F5, Opera/Konqueror: press F5.

AzaToth's reversion tools

  */

// importScript('User:AzaToth/twinkle.js');

/*

Lupin's anti-vandal tools

  */

// Script from User:Lupin/recent2.js

importScript( 'User:Lupin/recent2.js');

importScript('User:Chicocvenancio/HelpDeskTBLinks.js');

/*==Tool to delete all non-current revisions of the image and remove the "rescaled" tag from the description page ==*/

importScript("User:Drilnoth/delresized.js");

//

// PermissionOTRS.js

// Originally from https://commons.wikimedia.org/wiki/MediaWiki:Gadget-PermissionOTRS.js

//

// Adds OTRS permission template via the API. Other templates such as

// {{OTRS pending}} will be removed.

//

// Maintainer: DieBuche

// Licensed under the terms of the MIT license

// Authors: Bryan Tong Minh, :de:User:DerHexer, User:Guandalug, User:DieBuche

// Modified by Legoktm for use on :w:en:

/*global mediaWiki:false, jQuery:false, prompt:false, alert:false */

/*jshint curly:false */

(function($, mw) {

'use strict';

if (mw.config.get('wgNamespaceNumber') !== 6) return;

var PermissionOTRS = window.PermissionOTRS = {

usersignature: "{{subst:" + "REVISIONUSER}}",

prompt: function () {

this.ticket = prompt('Ticket link or Number:');

this.ticket = $.trim(this.ticket);

if (this.ticket) this.getPage(this, this.addPermission);

},

getPage: null,

cleanUp: null,

savePage: null,

addPermission: function (result) {

var pages = result.query.pages;

for (var id in pages) {

if (pages.hasOwnProperty(id)) {

var page = pages[id];

this.edittoken = page.edittoken;

this.content = page.revisions[0]['*'];

this.timestamp = page.revisions[0].timestamp;

//Check whether numerical

var type;

if (this.ticket.match(/^\d*$/)) {

type = "id";

} else {

type = "ticket";

}

var template = '{{PermissionOTRS|' + type + '=' + this.ticket + "|" + this.usersignature + "}}";

var text = this.content;

var permTester = /\|Permission\s*\=/i;

if (!permTester.test(text)) {

return alert('No suitable place found to insert template!');

}

text = this.cleanUp(text);

var replacedlicence = text.match(/\|Permission\s*\=([^\n]*)(\n)/);

if (replacedlicence && replacedlicence[1] && replacedlicence[2]) {

if ($.trim(replacedlicence[1]) !== "") {

replacedlicence = replacedlicence[2] + replacedlicence[1];

text += "\r\n" + replacedlicence;

}

}

text = text.replace(/\|Permission(\s*)\=[^\n]*/i, "|Permission$1= " + template);

this.content = text;

this.savePage('Adding OTRS permission using PermissionOTRS.js');

}

}

}

};

var OTRSreceived = window.OTRSreceived = {

prompt: function () {

this.ticket = prompt('Ticket link or Number:');

this.ticket = $.trim(this.ticket);

if (this.ticket) this.getPage(this, this.addPermission);

},

getPage: null,

cleanUp: null,

savePage: null,

// Rillke: I will never understand why doing so complicated. Just use {{subst:#time ...}} and you even get the server(UTC)-time.

formatDate: function (fmt, date) {

var pad0 = function (s) {

s = "" + s;

return (s.length > 1 ? s : "0" + s);

}; // zero-pad to two digits

if (!date) date = new Date();

fmt = fmt.replace(/YYYY/g, date.getUTCFullYear());

fmt = fmt.replace(/MM/g, pad0(date.getUTCMonth() + 1));

fmt = fmt.replace(/DD/g, pad0(date.getUTCDate()));

fmt = fmt.replace(/MON/g, mw.config.get('wgMonthNames')[date.getUTCMonth()+1]);

fmt = fmt.replace(/DAY/g, date.getUTCDate());

return fmt;

},

addPermission: function (result) {

var pages = result.query.pages;

for (var id in pages) {

if (pages.hasOwnProperty(id)) {

var page = pages[id];

this.edittoken = page.edittoken;

this.content = page.revisions[0]['*'];

this.timestamp = page.revisions[0].timestamp;

//Check whether numerical

var type;

if (this.ticket.match(/^\d*$/)) {

type = "id";

} else {

type = "ticket";

}

var template = '{{OTRS received|' + type + '=' + this.ticket + this.formatDate("|year=YYYY|month=MON|day=DAY}}");

var text = this.content;

var permTester = /\|Permission\s*\=/i;

if (!permTester.test(text)) {

return alert('No suitable place found to insert template!');

}

text = this.cleanUp(text);

var replacedlicence = text.match(/\|Permission\s*\=([^\n]*)(\n)/);

if (replacedlicence && replacedlicence[1] && replacedlicence[2]) {

if ($.trim(replacedlicence[1]) !== "") {

replacedlicence = replacedlicence[2] + replacedlicence[1];

text += "\r\n" + replacedlicence;

}

}

text = text.replace(/\|Permission(\s*)\=[^\n]*/i, "|Permission$1= " + template);

this.content = text;

this.savePage('OTRS email received but permission not yet confirmed');

}

}

}

};

OTRSreceived.getPage = PermissionOTRS.getPage = function (thisarg, cb) {

$.getJSON(mw.config.get('wgScriptPath') + '/api.php', {

action: "query",

format: "json",

prop: "info|revisions",

intoken: "edit",

rvprop: "content|timestamp",

titles: mw.config.get('wgPageName')

}, function(r) {cb.apply(thisarg, [r]);});

};

OTRSreceived.cleanUp = PermissionOTRS.cleanUp = function(text) {

//text = text.replace(/\=\= Summary \=\=/g, '== {{int:filedesc}} ==');

//text = text.replace(/\=\= Licensing \=\=/g, '== {{int:license-header}} ==');

text = text.replace(/\{\{OTRS[ _\-][Pp]ending[^\}\n]*\}\}/g, '');

text = text.replace(/\{\{no[ _]license[^\}\n]*\}\}/g, '');

text = text.replace(/\{\{no[ _]permission[^\}\n]*\}\}/g, '');

text = text.replace(/\{\{no[ _]OTRS[ _]permission[^\}\n]*\}\}/g, '');

text = text.replace(/\{\{OTRS[ _][Rr]eceived[^\}\n]*\}\}/g, '');

text = text.replace(/\{\{delete[^\n]*\(CE[S]?T\)\s*/g, '');

text = text.replace(/\{\{delete[^\}\n]*\}\}\b/g, '');

text = text.replace(/\{\{di-no[ _]permission[^\}\n]*\}\}\b/g, ''); //Added by Legoktm

return text;

};

OTRSreceived.savePage = PermissionOTRS.savePage = function (summary) {

var params = {

action: 'edit',

summary: summary,

watchlist: 'preferences',

title: mw.config.get('wgPageName'),

token: this.edittoken,

text: this.content,

format:'json'

};

$.ajax({

url: mw.config.get('wgScriptPath') + '/api.php',

cache: false,

dataType: 'json',

data: params,

basetimestamp: this.timestamp,

type: 'POST',

success: function () {

window.location.reload();

}

});

};

$.when( mw.loader.using(['mediawiki.util']), $.ready ).done( function () {

mw.util.addPortletLink('p-tb', 'javascript:void(PermissionOTRS.prompt())', 'PermissionOTRS');

mw.util.addPortletLink('p-tb', 'javascript:void(OTRSreceived.prompt())', 'OTRS received');

});

}(jQuery, mediaWiki));

//

mw.loader.load('//en.wikipedia.org/w/index.php?title=User%3AB%2Frescaledsidebar.js&action=raw&ctype=text/javascript'); // User:B/rescaledsidebar.js