מדיה ויקי:Gadget-WLM.js

גרסה מ־13:44, 25 בספטמבר 2016 מאת wikipedia:he>IKhitron (http://www.danstools.com/javascript-beautify/)

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
function i18n(name) {
    var msg = {
        mark: ['סימון כעריכה שנקראה', 'Mark as read'],
        unmark: ['סימון כעריכה שלא נקראה', 'Mark as unread'],
        close: ['הסתרת העריכה', 'Hide revision'],
        markFlow: ['סימון זרימה כנקראה', 'Mark flow as read'],
        markCat: ['סימון קטגוריה כנקראה', 'Mark categorization as read'],
        manymarked: ['שורות סומנו', 'lines marked'],
        hideAll: ['הסתרת עריכות שנקראו', 'Hide all read'],
        showAll: ['הצגת עריכות שהוסתרו', 'Show all hidden']
    };
    return msg[name][lang];
}

function seen(obj) {
    obj.before(
            $('<a>', {
                text: '\u200f',
                title: i18n('mark'),
                href: '#nw',
                class: 'mark-all-edits WLM-icon'
            }).click(function() {
                var $this = $(this);
                if (window.script96 !== 'unhide') $('.yellowedit').hide();
                var diff = /diff=([0-9]+)/.exec($this.parent().find('a[href*="diff"]').prop('href'))[1];
                new mw.Api().postWithToken('csrf', {
                    action: 'setnotificationtimestamp',
                    titles: $this.next().text(),
                    newerthanrevid: diff
                }).done(function() {
                    unseen($this);
                    $this.closest('.mw-changeslist-line-watched').removeClass('mw-changeslist-line-watched blueedit')
                        .addClass('mw-changeslist-line-not-watched yellowedit');
                    var name = $this.closest('.mw-changeslist-line-not-watched').find('.mw-changeslist-title').text();
                    var prevs = $('.mw-changeslist-line-watched .mw-changeslist-title').filter(function() {
                        var thediff = /.*diff=([0-9]+).*oldid.*/.exec($(this).closest('.mw-changeslist-line-watched')
                            .find('a[href*="diff"]').prop('href'));
                        return thediff && $(this).text() == name && thediff[1] < diff;
                    }).closest('.mw-changeslist-line-watched');
                    prevs.removeClass('mw-changeslist-line-watched blueedit')
                        .addClass('mw-changeslist-line-not-watched yellowedit').find('.mark-all-edits').remove();
                    prevs.show();
                    unseen(prevs.find('span.mw-title'));
                    if (prevs.length > 0)
                        $this.closest('td, li').prepend($('<span>', {
                            text: ' ' + (prevs.length + 1) + ' ' +
                                i18n('manymarked') + ' ',
                            style: 'background-color: red'
                        }));
                    $this.remove();
                });
            })).filter(function() {
            return $(this).closest('.mw-changeslist-line-watched').find('a[href*="diff"]').length <= 0
        })
        .prev().remove();
}

function unseen(obj) {
    obj.before(
            $('<a>', {
                text: '\u200f',
                title: i18n('unmark'),
                href: '#nw',
                class: 'unmark-edits WLM-icon'
            }).click(function() {
                var $this = $(this);
                var diffcond = $this.closest('.mw-changeslist-line-not-watched').find('abbr.newpage').length > 0;
                var oldrev = diffcond ? 0 : /oldid=([0-9]+)/.exec($this.parent().find('a[href*="oldid"]').prop('href'))[1];
                var diff = diffcond ? 0 : /diff=([0-9]+)/.exec($this.parent().find('a[href*="diff"]').prop('href'))[1];
                new mw.Api().postWithToken('csrf', {
                    action: 'setnotificationtimestamp',
                    titles: $this.next().text(),
                    newerthanrevid: oldrev
                }).done(function() {
                    $this.closest('.mw-changeslist-line-not-watched')
                    	.removeClass('mw-changeslist-line-not-watched yellowedit')
                    	.addClass('mw-changeslist-line-watched blueedit');
                    seen($this);
                    var name = $this.closest('.mw-changeslist-line-watched').find('.mw-changeslist-title').text();
                    var prevs = $('.mw-changeslist-line-not-watched .mw-changeslist-title').filter(function() {
                        var thediff = /.*diff=([0-9]+).*oldid.*/.exec($(this).closest('.mw-changeslist-line-not-watched')
                            .find('a[href*="diff"]').prop('href'));
                        return thediff && $(this).text() == name && thediff[1] > diff;
                    }).closest('.mw-changeslist-line-not-watched');
                    prevs.removeClass('mw-changeslist-line-not-watched yellowedit')
                        .addClass('mw-changeslist-line-watched blueedit').find('.unmark-edits').remove();
                    prevs.show();
                    seen(prevs.find('span.mw-title'));
                    $this.remove();
                });
            })).filter(function() {
            return $(this).closest('tr, li').find('a[href*="oldid"]').length <= 0
        })
        .prev().remove();
}

function hider() {
    $('.mw-changeslist-line-not-watched, [class*="mw-changeslist-log"]').hide();
    $('abbr.wikibase-edit').closest('.mw-changeslist-line-watched').hide();
}

function closeedit() {
    $('td.mw-enhanced-rc, li span.mw-changeslist-date').parent().filter(function() {
        return $(this).find('td.mw-enhanced-rc-nested').length <= 0;
    }).prepend($('<a>', {
        text: 'x\u200f',
        title: i18n('close'),
        href: '#nw',
        class: 'close-edit'
    }).click(function() {
        $(this).closest('.mw-changeslist-line-not-watched, .mw-changeslist-line-watched').hide();
    }));
    $('td.mw-enhanced-rc').parent().find('td.mw-enhanced-rc-nested').prev().before($('<td>'));
}

function flowseen() {
    $('.mw-changeslist-line-watched a.mw-title').before(
        $('<a>', {
            text: '\u200f',
            title: i18n('markFlow'),
            href: '#nw',
            class: 'mark-all-flow-edits WLM-icon'
        })
        .click(function() {
            var $this = $(this);
            var topic = 'נושא:' + /title=[^:]*:(.+)&/.exec($this.parent().find('a[href*="fromnotif"]').prop('href'))[1];
            var page = $this.parent().find('a.mw-title').prop('title');
            new mw.Api().postWithToken('csrf', {
                action: 'setnotificationtimestamp',
                titles: topic + '|' + page,
            }).done(function() {
                $this.closest('.mw-changeslist-line-watched').removeClass('mw-changeslist-line-watched blueedit')
                    .addClass('mw-changeslist-line-not-watched yellowedit').hide();
                $this.remove();
            });
        }));
}

function categoryseen() {
    var cat = $('.mw-changeslist-line-watched span.mw-title').filter(function() {
        return $(this).closest('.mw-changeslist-line-watched').find('a[href*="diff"]').length <= 0 && $(this).closest('.mw-changeslist-line-watched').find('abbr.newpage').length <= 0;
    });
    var page = cat.parent().find('a.mw-changeslist-title').prop('title');
    cat.before($('<a>', {
            text: '\u200f',
            title: i18n('markCat'),
            href: '#nw',
            class: 'mark-cat-edits WLM-icon'
        })
        .click(function() {
            var $this = $(this);
            new mw.Api().postWithToken('csrf', {
                action: 'setnotificationtimestamp',
                titles: page,
            }).done(function() {
                $this.closest('.mw-changeslist-line-watched').removeClass('mw-changeslist-line-watched blueedit')
                    .addClass('mw-changeslist-line-not-watched yellowedit').hide();
                $this.remove();
            });
        }));
}
if (mw.config.get('wgCanonicalSpecialPageName') == 'Watchlist') {
    $('.mw-body-content').addClass((typeof window.orientation == 'undefined') ? 'WLM-desktop' : 'WLM-mobile');
    importStylesheet('User:IKhitron/96.css');
    var lang = mw.user.options.get('language') == 'he' ? 0 : 1;
    seen($('.mw-changeslist-line-watched span.mw-title'));
    unseen($('.mw-changeslist-line-not-watched span.mw-title'));
    flowseen();
    categoryseen();
    closeedit();
    if (window.WLM !== 'unhide') hider();
    mw.loader.using('mediawiki.util').done(function() {
        $('#mw-watchlist-form').after($('<input>', {
                value: i18n('hideAll'),
                id: 'hideAll',
                type: 'submit'
            }))
            .after($('<span>', {
                text: 'place',
                id: 'placeholder'
            }).css('visibility', 'hidden'))
            .after($('<input>', {
                value: i18n('showAll'),
                id: 'showAll',
                type: 'submit'
            }))
            .after($('<div>', {
                text: 'place',
                id: 'placeline'
            }).css({
                visibility: 'hidden',
                'font-size': '50%'
            }));
        $('#hideAll').click(hider);
        $('#showAll').click(function() {
            $('[class*="mw-changeslist"]').show();
        });
    });
}