מדיה ויקי:סקריפטים/71.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
// סקריפט 71: הוספת כפתור "תאריכי הוספה" לקטגוריה
//Written by [[User:ערן]]
if (mw.config.get('wgNamespaceNumber') == 14) mw.loader.using( ['mediawiki.util', 'mediawiki.api'] ).done( function() {
function tsToDate(rc) {
var date = new Date(rc.timestamp);
if (isNaN(date)) {// all sane browsers can just do new Date(rc.timestanp). only IE refuses.
dar = rc.timestamp.split(/[^\d]/); // timestamp looks like so: "2011-05-05T18:56:27Z"
var month = parseInt(dar[1],10) - 1; // "Date" expexts months in the range of 0..11, timestamp is more conventional.
var minutes = parseInt(dar[4], 10) - new Date().getTimezoneOffset();//ts is UTC, but new Date(y,M,d,h,m,s) assumes local TZ
date = new Date(dar[0],month,dar[2],dar[3],minutes,dar[5]);
}
return date;
}
function ago(rec) {
var ms = now - tsToDate(rec);
var s = ms / 1000;
if (s < 100)
return {c:0, s:'ברגע זה'};
var ranges = [
{r: 60, t: 'דקות', s: 'דקה', d: 'שתי דקות'},
{r: 60, t: 'שעות', s: 'שעה', d: 'שעתיים'},
{r: 24, t: 'ימים', s: 'יממה', d: 'יומיים'},
{r: 7, t: 'שבועות', s: 'שבוע', d: 'שבועיים'},
{r: 52, t: 'שנים', s: 'שנה', d: 'שנתיים'}
];
var est = '', num;
for (var i = 0; i < ranges.length; i++) {
var range = ranges[i];
s /= range.r;
if (s < 1)
break;
num = '';
if (s < 2)
est = range.s;
else if (s < 3 && range.d)
est = range.d;
else {
num = '-' + Math.floor(s) + ' ';
est = range.t;
}
}
return {c: i, s: 'לפני כ' + num + est};
}
{
var now = new Date();
if (window.auto_cat_dates) {
doit();
} else {
var link = mw.util.addPortletLink('p-cactions','#','תאריכי הוספה','queryAdded');
if ( link ) {
link.onclick = doit;
}
}
function doit(){
var
catQuery={
list:'categorymembers',
cmtitle:mw.config.get('wgPageName'),
cmprop:'timestamp|title|type',
cmtype:'page|subcat|file',
cmlimit:500
},
catRegex = /^קטגוריה:/,
colors = ['red', 'red', 'red', 'red', 'orange', 'green'];
var from = mw.util.getParamValue('pagefrom') || mw.util.getParamValue('from');
if (from) catQuery.cmstartsortkey = from;
var api=new mw.Api();
api.get(catQuery).done(function(data){
var linkTitle={}, catTitle = {};
$('#mw-pages a, #mw-category-media a').each(function(){
linkTitle[this.title] = this;
});
$('#mw-subcategories a').each(function(){
catTitle[$(this).text()] = this;
});
$(data.query.categorymembers).each(function(index, item)
{
var when = ago(item),
link = $('<a>', { href: mw.util.getUrl(item.title, { action: 'history', limit:1, offset: item.timestamp.replace(/[:TZ-]/g, '') })})
.append(
$('<span>', {title:item.timestamp})
.css({fontSize: '70%', color: colors[when.c], cursor: 'pointer' })
.text(' ' + when.s + ' ')
);
if (item.type == 'subcat')
$(catTitle[item.title.replace(catRegex, '')]).after(link);
else
$(linkTitle[item.title]).after(link);
});
});
};
}
});