MediaWiki:Gadget-editHysteria.js
Заўвага: каб пабачыць зьмены пасьля публікацыі, Вам можа спатрэбіцца ачысьціць кэш Вашага браўзэра.
- Firefox / Safari: трымайце Shift і націсьніце Reload, ці націсьніце Ctrl-F5 ці Ctrl-R (⌘-R на Mac)
- Google Chrome: націсьніце Ctrl-Shift-R (⌘-Shift-R на Mac)
- Internet Explorer / Edge: трымайце Ctrl і націсьніце Refresh, ці націсьніце Ctrl-F5
- Opera: націсьніце Ctrl-F5.
// Original version:
// - EditHysteria script by [[:pl:User:ChP94]]
// - Released under the [http://www.gnu.org/licenses/gpl.txt GNU Public License (GPL)]
// Modified by [[:pl:User:Beau]]
// Modified by [[:uk:User:AS]]
// Translated by [[:be-tarask:User:Taravyvan Adijene]]
window.editHysteriaGadget = {
version: 5,
init: function() {
if (mw.config.get( 'wgNamespaceNumber' ) < 0 ||
mw.util.getParamValue('printable') === 'yes' ||
mw.config.get('wgRevisionId') != mw.config.get('wgCurRevisionId')) {
return;
}
var that = this;
var api = new mw.Api();
api.get({
action: 'query',
prop: 'revisions',
rvprop: 'user|ids|userid|timestamp',
titles: mw.config.get('wgPageName'),
rvlimit: 50,
}).done(function(result) {
jQuery(document).ready(function() {
if (result) {
that.showResults(result);
}
});
});
},
userlink: function(name) {
var str = '<a href="' + mw.util.getUrl('User:' + name) + '">' + name + '</a> ' +
'(<a href="' + mw.util.getUrl('Special:Contributions/' + name) + '">унёсак</a>, <a href="' + mw.util.getUrl('User talk:' + name) + '">гутаркі</a>';
if ( jQuery.inArray( 'sysop', mw.config.get( 'wgUserGroups' ) ) != -1 ) {
str += ', <a href="' + mw.util.getUrl('Special:Blockip/' + name) + '">заблякаваць</a>';
}
str += ')';
return str;
},
showResults: function(data) {
var page = data.query.pages[ mw.config.get( 'wgArticleId' ) ];
var firstHeading;
var headers = document.getElementsByTagName( 'h1' );
for ( var i = 0; i < headers.length; i++ ) {
var header = headers[i];
if(header.className == "firstHeading" || header.id == "firstHeading" || header.className == "pagetitle") {
firstHeading = header; break;
}
}
if( !firstHeading ) {
firstHeading = document.getElementById("section-0");
}
if( !firstHeading ) {
return;
}
var div = document.createElement("div");
div.style.cssText = "font-size:0.5em;line-height:1em";
div.className = 'plainlinks';
if ( mw.config.get( 'skin' ) == 'modern' ) {
div.style.marginLeft = "10px";
div.style.display = "inline-block";
}
firstHeading.appendChild(div);
var html = '';
if (! page) {
div.innerHTML = html + "Старонкі не існуе.";
div.style.color = "red";
return;
}
var topuser = page.revisions[0].user;
var topuserid = page.revisions[0].userid;
var topTimeAgo = this.timeAgo(page.revisions[0].timestamp);
var ldiff;
var luser;
var luserid;
var ltimestamp;
var count = 1;
for (i = 1; i < page.revisions.length; i++) {
ldiff = page.revisions[i].revid;
luser = page.revisions[i].user;
luserid = page.revisions[i].userid;
ltimestamp = page.revisions[i].timestamp;
if (luser != topuser)
break;
count++;
}
var toApplyGender = {};
if (ldiff) {
html += 'Апошнім разам <a href="'+ mw.util.getUrl( mw.config.get('wgPageName') ) + '?diff=cur&oldid=' + ldiff + '"/>рэдагаваная</a>' +
' <span class="edit-hysteria-by-user">ўдзельнікам</span> ' + this.userlink(topuser) + ' (' + count + '×, ' + topTimeAgo + ')';
toApplyGender.byUser = topuserid;
if(luser !== "" && luser != topuser) {
var lTimeAgo = this.timeAgo(ltimestamp);
html += '. Раней <span class="edit-hysteria-edited-by">рэдагаваў</span> ' + this.userlink(luser) + ' (' + lTimeAgo + ')';
toApplyGender.editedBy = luserid;
}
html += '.';
div.innerHTML = html;
}
else if (topuser !== "") {
div.innerHTML = html + 'Гэта адзіная вэрсія, створаная <span class="edit-hysteria-by-user">ўдзельнікам</span> ' + this.userlink(topuser) + ' (' + topTimeAgo + ').';
}
if ( mw.config.get('skin') == 'modern' ) {
var links = div.getElementsByTagName('a');
for (i = 0; i < links.length; i++) {
links[i].style.color = 'white';
links[i].style.textDecoration = 'underline';
}
}
this.applyGender(toApplyGender);
},
applyGender: function(toApplyGender){
if(jQuery.isEmptyObject(toApplyGender)) return;
var userids = toApplyGender.editedBy ? toApplyGender.byUser + '|' + toApplyGender.editedBy : toApplyGender.editedBy;
var api = new mw.Api();
api.get({
action: 'query',
list: 'users',
ususerids: userids,
usprop: 'gender',
}).done(function(data) {
if (data) {
var users = data.query.users;
var user;
for (var i = 0; i < users.length; i++) {
user = users[i];
if (user.userid == toApplyGender.editedBy && user.gender === 'female'){
jQuery('.edit-hysteria-edited-by').text('рэдагавала');
}
else
if (user.userid == toApplyGender.byUser && user.gender === 'female'){
jQuery('.edit-hysteria-by-user').text('ўдзельніцай');
}
}
}
});
},
timeAgo: function(timestamp) {
var date = new Date(timestamp);
var seconds = Math.floor((new Date() - date) / 1000);
var interval = seconds / 31536000;
if (interval > 1) {
return Math.floor(interval) + " г. таму";
}
interval = seconds / 2592000;
if (interval > 1) {
return Math.floor(interval) + " м. таму";
}
interval = seconds / 86400;
if (interval > 1) {
return Math.floor(interval) + " дз. таму";
}
interval = seconds / 3600;
if (interval > 1) {
return Math.floor(interval) + " гдз. таму";
}
interval = seconds / 60;
if (interval > 1) {
return Math.floor(interval) + " хв. таму";
}
return Math.floor(seconds) + " сэк. таму";
}
};
editHysteriaGadget.init();