מדיה ויקי:Gadget-Login-or-not-Login.js

מתוך ויקיטקסט, מאגר הטקסטים החופשי

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
if(mw.config.get('wgNamespaceNumber')==2 || mw.config.get('wgNamespaceNumber')==3)
mw.loader.using('jquery.tipsy', function() {
    var user=mw.config.get('wgTitle').replace(/\/.*$/, '');
        if (!user)
                return;
 
        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(ms) {
                var s = ms / 1000;
                if (s < 100)
                        return 'ברגע זה';
                var ranges = [
                                {r: 60, t: 'דקות', s: 'דקה', d: 'שתי דקות'},
                                {r: 60, t: 'שעות', s: 'שעה', d: 'שעתיים'},
                                {r: 24, t: 'ימים', s: 'יממה', d: 'יומיים'},
                                {r: 7, t: 'שבועות', s: 'שבוע', d: 'שבועיים'},
                                {r: 4, t: 'חודשים', s: 'חודש', d: 'חודשיים'},
                                {r: 12, 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 'לפני כ' + num + est;
        }
 
        function pic(recent) {
                return  recent
                        ? '//upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Dialog-information_on.svg/15px-Dialog-information_on.svg.png'
                        : '//upload.wikimedia.org/wikipedia/commons/thumb/1/11/Dialog-information_red.svg/15px-Dialog-information_red.svg.png';
        }
 
    $.getJSON(mw.util.wikiScript('api'), 
                {action: 'query', list: 'usercontribs', ucuser: user, uclimit: '1', format:'json'}, 
                function (data) {
                   if (data && data.query && data.query.usercontribs && data.query.usercontribs.length) {
                                var lastEditTime = tsToDate(data.query.usercontribs[0]),
                                        timeSinceEdit = new Date() - lastEditTime;
                                        recent = timeSinceEdit < 1000 * 60 * 20,
                                        page = data.query.usercontribs[0].title,
                                        pageLink = $('<a>', {href: mw.util.getUrl(page), text: page}),
                                        userLinkTitle = 'השאר ל' + user + ' הודעה חדשה בדף השיחה',
                                        userLink = $('<a>', {href: mw.util.getUrl('User Talk:' + user) + '?action=edit&section=new', title: userLinkTitle, text: user}),
                                        div = $('<div>')
                                                .append('העריכה האחרונה של ').append(userLink).append('<br />')
                                                .append('הייתה ' + ago(timeSinceEdit) + '<br />')
                                                .append('בדף: ').append(pageLink),
                                        timer = null,
                                        img = $('<img>',{src: pic(recent)})
                                                .css({float: 'left'})
                                                .tipsy({gravity: 'nw', trigger: 'manual', title: function(){return div.html();}, html: true, fade: true})
                                                .mouseover(function() {
                                                        img.tipsy('show')
                                                })
                                                .mouseout(function() {
                                                        timer = setTimeout(function(){
                                                                img.tipsy('hide')
                                                        }, 1000);
                                                });
                                $('.tipsy')
                                        .on('mouseover', function() {
                                                clearTimeout(timer);
                                        })
                                        .on('mouseout', function(){
                                                timer = setTimeout(function(){
                                                        img.tipsy('hide')
                                                }, 1000);
                                        });
                                $('#firstHeading').prepend(img);
                        }
                }
     ); 
});
//