מדיה ויקי:Gadget-WLM-draft.js: הבדלים בין גרסאות בדף

מתוך צפונות ויקי
אין תקציר עריכה
מ (1,117 גרסאות של הדף wikipedia:he:מדיה_ויקי:Gadget-WLM-draft.js יובאו)
 
(22 גרסאות ביניים של משתמש אחר אחד אינן מוצגות)
שורה 1: שורה 1:
var timestamp;
new mw.Api()
.get({
action: 'query',
format: 'json',
curtimestamp: 1
})
.done(function(data) {
timestamp = data.curtimestamp;
});
$(function() {
$(function() {
    function i18n(name) {
var timestamp, langmark;
        var msg = {
var api = new mw.Api();
            mark: ['סימון כעריכה שנקראה', 'Mark as read'],
api.get({
            unmark: ['סימון כעריכה שלא נקראה', 'Mark as unread'],
action: 'query',
            close: ['הסתרת העריכה', 'Hide revision'],
format: 'json',
            markFlow: ['סימון זרימה כנקראה', 'Mark flow as read'],
curtimestamp: 1
            markCat: ['סימון קטגוריה כנקראה', 'Mark categorization as read'],
})
            manymarked: ['שורות סומנו', 'lines marked'],
.done(function(data) {
            goldbutton: ['פתיחה וסימון של כל העריכות בדף הזה', 'Open and mark all this page revisions'],
timestamp = data.curtimestamp;
            jsonlost: ['קובץ קונפיגורציה לא אותר', 'Configuration file not found'],
});
            hideAll: ['הסתרת עריכות שנקראו', 'Hide all read'],
            showAll: ['הצגת עריכות שהוסתרו', 'Show all hidden'],
            whatsnew: ['מה חדש?', "What's new?"],
            loga: ['שימו לב: רשימת המעקב כוללת רשומת יומן שלא נקראה. הדף הוא ',
                'Pay attention: the watchlist includes unread log entry. Page name: '
            ],
            logb: [', הפעולה שנעשתה היא: ', ', log action: '],
            logc: ['(לפרטים)', '(details)'],
            logd: ['אם ברצונכם לסמן אותה כנקראה, בדקו כי אין עריכות אחרות של הדף הזה שלא נקראו,' +
                ' כי גם הן יסומנו. לאחר מכן לחצו ', 'If you want to mark it as read, check that there are' +
                ' no other unwatched revisions of this page, because they will be marked too. Then click '
            ],
            loge: ['כאן', 'here'],
            clear: ['ניקוי', 'clear'],
            help: ['לפרטים ראו עזרה:מנהל רשימת המעקב', '']
        };
        return msg[name][lang || 0];
    }


    function button(msg, icon) {
function i18n(name) {
        return $('<a>', {
var msg = {
                text: '\u200f',
mark: ['סימון כעריכה שנקראה', 'Mark as read'],
                title: i18n(msg),
unmark: ['סימון כעריכה שלא נקראה', 'Mark as unread'],
                href: '#nw'
close: ['הסתרת העריכה', 'Hide revision'],
            })
markFlow: ['סימון זרימה כנקראה', 'Mark flow as read'],
            .addClass(icon + ' WLM-icon');
markCat: ['סימון קטגוריה כנקראה', 'Mark categorization as read'],
    }
manymarked: ['שורות סומנו', 'lines marked'],
goldbutton: ['פתיחה וסימון של כל העריכות בדף הזה',
'Open and mark all this page revisions'
],
jsonlost: ['קובץ קונפיגורציה לא אותר', 'Configuration file not found'],
hideAll: ['הסתרת עריכות שנקראו', 'Hide all read'],
showAll: ['הצגת עריכות שהוסתרו', 'Show all hidden'],
whatsnew: ['מה חדש?', "What's new?"],
closenew: ['סגירת רשימת החדשים', "Close the bar"],
loga: ['שימו לב: רשימת המעקב כוללת רשומת יומן שלא נקראה. הדף הוא ',
'Pay attention: the watchlist includes unread log entry. Page name: '
],
logb: [', הפעולה שנעשתה היא: ', ', log action: '],
logc: ['(לפרטים)', '(details)'],
logd: [
'אם ברצונכם לסמן אותה כנקראה, בדקו כי אין עריכות אחרות של הדף הזה שלא נקראו,' +
' כי גם הן יסומנו. לאחר מכן לחצו ',
'If you want to mark it as read, check that there are' +
' no other unwatched revisions of this page, because they will be marked too. Then click '
],
loge: ['כאן', 'here'],
clear: ['ניקוי', 'clear'],
help: ['לפרטים ראו עזרה:מנהל רשימת המעקב', '']
};
return msg[name][lang || 0];
}


    function seen(obj) {
function button(msg, icon) {
        obj.filter(function() {
return $('<a>', {
                return $(this)
text: langmark,
                    .closest('.mw-changeslist-line-watched')
title: i18n(msg),
                    .filter(notcat)
href: '#nw'
                    .find('a[href*="diff"]')
})
                    .filter(notme)
.addClass(icon + ' WLM-icon');
                    .filter(function() {
}
                        return $(this)
                            .closest('.mw-enhanced-rc-nested')
                            .length <= 0;
                    })
                    .length > 0;
            })
            .before(button('mark', 'mark-edits')
                .click(function() {
                    if (config.hidemarked.edit)
                        $('.yellowedit')
                        .hide();
        var curid = /curid=([0-9]+)/.exec($(this)
        .closest('table, li')
        .find('a[href*="curid"]')
        .filter(notme)
        .prop('href'))[1];
                    var $this = $(this),
                        diff = /diff=([0-9]+)/.exec($this.parent()
                            .find('a[href*="diff"]')
                            .filter(notme)
                            .prop('href'))[1],
                        name = $this.parent()
                        .find('.mw-changeslist-title')
                        .text(),
                        all = $('.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"]')
                                .filter(notme)
                                .prop('href'));
                            return thediff && $(this)
                                .text() == name && thediff[1] <= diff;
                        })
                        .closest('.mw-changeslist-line-watched'),
                        allboth = $('.mw-changeslist-line-watched .mw-changeslist-title')
                        .filter(function() {
                            return $(this)
                                .text() == name;
                        })
                        .closest('.mw-changeslist-line-watched');
                    new mw.Api()
                        .postWithToken('csrf', {
                            action: 'setnotificationtimestamp',
                            titles: name,
                            newerthanrevid: diff
                        })
                        .done(function() {
                            if (all.length > 1)
                                $this.closest('table, li')
                                .append($('<span>')
                                    .text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
                                    .css({
                                        backgroundColor: 'red'
                                    }));
                            all.removeClass('mw-changeslist-line-watched blueedit')
                                .addClass('mw-changeslist-line-not-watched yellowedit')
                                .show()
                                .find('.mark-edits')
                                .remove();
                            allboth.find('.gold-button')
                                .remove();
                            $('#gold-little-' + curid)
                            .find('a')
                            .remove();
                            defected[curid] = true;
                            unseen(all.find('span.mw-title'));
                            if (!config.hidemarked.wait)
                                all.hide();
                        });
                }));
    }


    function unseen(obj) {
function seen(obj) {
        obj.filter(function() {
obj.filter(function() {
                return $(this)
return $(this)
                    .closest('table, li')
.closest('.mw-changeslist-line-watched')
                    .filter(notcat)
.filter(notcat)
                    .find('a[href*="oldid"]')
.find('a[href*="diff"]')
                    .length > 0;
.filter(notme)
            })
.filter(function() {
            .before(button('unmark', 'unmark-edits')
return $(this)
                .click(function() {
.closest('.mw-enhanced-rc-nested')
        var curid = /curid=([0-9]+)/.exec($(this)
.length <= 0;
        .closest('table, li')
})
        .find('a[href*="curid"]')
.length > 0;
        .filter(notme)
})
        .prop('href'))[1];
.before(button('mark', 'mark-edits')
                    var $this = $(this),
.click(function() {
                        diffcond = $this
if (config.hidemarked.edit)
                        .closest('.mw-changeslist-line-not-watched')
$('.yellowedit')
                        .find('abbr.newpage')
.hide();
                        .length > 0,
var curid = /curid=([0-9]+)/.exec($(this)
                        oldrev = diffcond ? 0 : /oldid=([0-9]+)/.exec($this
.closest('table, li')
                            .parent()
.find('a[href*="curid"]')
                            .find('a[href*="oldid"]')
.filter(notme)
                            .filter(notme)
.prop('href'))[1];
                            .prop('href'))[1],
var $this = $(this),
                        diff = diffcond ? 0 : /diff=([0-9]+)/.exec($this
diff = /diff=([0-9]+)/.exec($this.parent()
                            .parent()
.find('a[href*="diff"]')
                            .find('a[href*="diff"]')
.filter(notme)
                            .filter(notme)
.prop('href'))[1],
                            .prop('href'))[1],
name = $this.parent()
                        name = $this
.find('.mw-changeslist-title')
                        .next()
.text(),
                        .text(),
all = $('.mw-changeslist-line-watched .mw-changeslist-title')
                        all = $('.mw-changeslist-line-not-watched .mw-changeslist-title')
.filter(function() {
                        .filter(function() {
var thediff = /.*diff=([0-9]+).*oldid.*/.exec($(this)
                            var thediff = /.*diff=([0-9]+).*oldid.*/.exec($(this)
.closest('.mw-changeslist-line-watched')
                                .closest('.mw-changeslist-line-not-watched')
.find('a[href*="diff"]')
                                .find('a[href*="diff"]')
.filter(notme)
                                .filter(notme)
.prop('href'));
                                .prop('href'));
return thediff && $(this)
                            return thediff && $(this)
.text() == name && thediff[1] <= diff;
                                .text() == name && thediff[1] >= diff;
})
                        })
.closest('.mw-changeslist-line-watched'),
                        .closest('.mw-changeslist-line-not-watched'),
allboth = $('.mw-changeslist-line-watched .mw-changeslist-title')
                        allboth = $('.mw-changeslist-line-watched .mw-changeslist-title')
.filter(function() {
                        .filter(function() {
return $(this)
                            return $(this)
.text() == name;
                                .text() == name;
})
                        })
.closest('.mw-changeslist-line-watched');
                        .closest('.mw-changeslist-line-watched');
api.postWithToken('csrf', {
                    new mw.Api()
action: 'setnotificationtimestamp',
                        .postWithToken('csrf', {
titles: name,
                            action: 'setnotificationtimestamp',
newerthanrevid: diff
                            titles: name,
})
                            newerthanrevid: oldrev
.done(function() {
                        })
if (all.length > 1)
                        .done(function() {
$this.closest('table, li')
                            if (all.length > 1)
.append($('<span>')
                                $this.closest('table, li')
.text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
                                .append($('<span>')
.css({
                                    .text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
backgroundColor: 'red'
                                );
}));
                            all.removeClass('mw-changeslist-line-not-watched yellowedit')
all.removeClass('mw-changeslist-line-watched blueedit')
                                .addClass('mw-changeslist-line-watched blueedit')
.addClass('mw-changeslist-line-not-watched yellowedit')
                                .show()
.show()
                                .find('.unmark-edits')
.find('.mark-edits')
                                .remove();
.remove();
                            allboth.find('.gold-button')
allboth.find('.gold-button')
                                .remove();
.remove();
                            $('#gold-little-' + curid)
$('#gold-little-' + curid)
                            .find('a')
.find('a')
                            .remove();
.remove();
                            defected[curid] = true;
defected[curid] = true;
                            seen(all.find('span.mw-title'));
unseen(all.find('span.mw-title'));
                        });
if (!config.hidemarked.wait)
                }));
all.hide();
    }
});
}));
}


    function flowseen() {
function unseen(obj) {
        $('.mw-changeslist-line-watched a.mw-title')
obj.filter(function() {
            .parent()
return $(this)
            .prepend(button('markFlow', 'mark-all-flow-edits')
.closest('table, li')
                .click(function() {
.filter(notcat)
                    var $this = $(this),
.find('a[href*="oldid"]')
                        topic = /title=[^:]*:(.+)&/.exec($this.parent()
.length > 0;
                            .find('a[href*="fromnotif"]')
})
                            .prop('href')),
.before(button('unmark', 'unmark-edits')
                        page = $this
.click(function() {
                        .closest('.mw-changeslist-line-watched')
var curid = /curid=([0-9]+)/.exec($(this)
                        .find('a.mw-title')
.closest('table, li')
                        .prop('title'),
.find('a[href*="curid"]')
                        titles = topic ? page + '|נושא:' + topic[1] : page;
.filter(notme)
                    new mw.Api()
.prop('href'))[1];
                        .postWithToken('csrf', {
var $this = $(this),
                            action: 'setnotificationtimestamp',
diffcond = $this
                            titles: titles,
.closest('.mw-changeslist-line-not-watched')
                        })
.find('abbr.newpage')
                        .done(function() {
.length > 0,
                            if (config.hidemarked.flow)
oldrev = diffcond ? 0 : /oldid=([0-9]+)/.exec($this
                                $this.closest('.mw-changeslist-line-watched')
.parent()
                                .hide();
.find('a[href*="oldid"]')
                            $this.closest('.mw-changeslist-line-watched')
.filter(notme)
                                .removeClass('mw-changeslist-line-watched blueedit')
.prop('href'))[1],
                                .addClass('mw-changeslist-line-not-watched yellowedit');
diff = diffcond ? 0 : /diff=([0-9]+)/.exec($this
                            $this.remove();
.parent()
                        });
.find('a[href*="diff"]')
                }));
.filter(notme)
    }
.prop('href'))[1],
name = $this
.next()
.text(),
all = $('.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"]')
.filter(notme)
.prop('href'));
return thediff && $(this)
.text() == name && thediff[1] >= diff;
})
.closest('.mw-changeslist-line-not-watched'),
allboth = $('.mw-changeslist-line-watched .mw-changeslist-title')
.filter(function() {
return $(this)
.text() == name;
})
.closest('.mw-changeslist-line-watched');
api.postWithToken('csrf', {
action: 'setnotificationtimestamp',
titles: name,
newerthanrevid: oldrev
})
.done(function() {
if (all.length > 1)
$this.closest('table, li')
.append($('<span>')
.text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
);
all.removeClass('mw-changeslist-line-not-watched yellowedit')
.addClass('mw-changeslist-line-watched blueedit')
.show()
.find('.unmark-edits')
.remove();
allboth.find('.gold-button')
.remove();
$('#gold-little-' + curid)
.find('a')
.remove();
defected[curid] = true;
seen(all.find('span.mw-title'));
});
}));
}


    function categoryseen() {
function flowseen() {
        $('.mw-changeslist-line-watched span.mw-title')
$('.mw-changeslist-line-watched a.mw-title')
            .filter(function() {
.parent()
                return ($(this)
.prepend(button('markFlow', 'mark-all-flow-edits')
                        .closest('.mw-changeslist-line-watched')
.click(function() {
                        .find('a[href*="diff"]')
var $this = $(this),
                        .length <= 0 && $(this)
topic = /title=[^:]*:(.+)&/.exec($this.parent()
                        .closest('.mw-changeslist-line-watched')
.find('a[href*="fromnotif"]')
                        .find('abbr.newpage')
.prop('href')),
                        .length <= 0) ||
page = $this
                    $(this)
.closest('.mw-changeslist-line-watched')
                    .find('a.mw-changeslist-title')
.find('a.mw-title')
                    .parent()
.prop('title'),
                    .next()
titles = topic ? page + '|נושא:' + topic[1] : page;
                    .text() == '. .';
api.postWithToken('csrf', {
            })
action: 'setnotificationtimestamp',
            .before(button('markCat', 'mark-cat-edits')
titles: titles,
                .click(function() {
})
                    var $this = $(this),
.done(function() {
                        page = $this.parent()
if (config.hidemarked.flow)
                        .find('a.mw-changeslist-title')
$this.closest('.mw-changeslist-line-watched')
                        .prop('title');
.hide();
                    new mw.Api()
$this.closest('.mw-changeslist-line-watched')
                        .postWithToken('csrf', {
.removeClass('mw-changeslist-line-watched blueedit')
                            action: 'setnotificationtimestamp',
.addClass('mw-changeslist-line-not-watched yellowedit');
                            titles: page,
$this.remove();
                        })
});
                        .done(function() {
}));
                            if (config.hidemarked.categorization)
}
                                $this.closest('.mw-changeslist-line-watched')
                                .hide();
                            $this.closest('.mw-changeslist-line-watched')
                                .removeClass('mw-changeslist-line-watched blueedit')
                                .addClass('mw-changeslist-line-not-watched yellowedit');
                            $this.remove();
                        });
                }));
    }


    function checklog() {
function categoryseen() {
        new mw.Api()
$('.mw-changeslist-line-watched span.mw-title')
            .get({
.filter(function() {
                action: 'query',
return ($(this)
                format: 'json',
.closest('.mw-changeslist-line-watched')
                list: 'watchlist',
.find('a[href*="diff"]')
                indexpageids: 1,
.length <= 0 && $(this)
                wllimit: 500,
.closest('.mw-changeslist-line-watched')
                wlprop: 'title|loginfo',
.find('abbr.newpage')
                wlshow: 'unread',
.length <= 0) ||
                wltype: 'log'
$(this)
            })
.find('a.mw-changeslist-title')
            .done(function(data) {
.parent()
                var firstname = data.query.watchlist;
.next()
                if (firstname.length > 0) {
.text() == '. .';
                    firstname = firstname[0];
})
                    $('#hideAll')
.before(button('markCat', 'mark-cat-edits')
                        .after($('<div>', {
.click(function() {
                                id: 'logmessage'
var $this = $(this),
                            })
page = $this.parent()
                            .addClass('blueedit')
.find('a.mw-changeslist-title')
                            .append($('<span>')
.prop('title');
                                .text(i18n('loga')))
api.postWithToken('csrf', {
                            .append($('<span>')
action: 'setnotificationtimestamp',
                                .text(firstname.title)
titles: page,
                                .css({
})
                                    fontWeight: 'bold',
.done(function() {
                                }))
if (config.hidemarked.categorization)
                            .append($('<span>')
$this.closest('.mw-changeslist-line-watched')
                                .text(i18n('logb') + firstname.logaction + ' '))
.hide();
                            .append($('<a>', {
$this.closest('.mw-changeslist-line-watched')
                                href: 'https://he.wikipedia.org//w/api.php?action=query&format=rawfm&list=watchlist&' +
.removeClass('mw-changeslist-line-watched blueedit')
                                    'indexpageids=1&wllimit=500&wlprop=title%7Cloginfo&wlshow=unread&wltype=log',
.addClass('mw-changeslist-line-not-watched yellowedit');
                                text: i18n('logc')
$this.remove();
                            }))
});
                            .append($('<span>')
}));
                                .text('. ' + i18n('logd') + ' '))
}
                            .append($('<a>', {target: '_blank'})
                                .text(i18n('loge'))
                                .click(function() {
                                    new mw.Api()
                                        .postWithToken('csrf', {
                                            action: 'setnotificationtimestamp',
                                            titles: firstname.title
                                        })
                                        .done(function() {
                                            $('#logmessage')
                                                .remove();
                                            var all = $('.mw-changeslist-line-watched a.mw-changeslist-title')
                                                .filter(function() {
                                                    return $(this)
                                                        .prop('title') == firstname.title;
                                                })
                                                .closest('.mw-changeslist-line-watched');
                                            all.removeClass('mw-changeslist-line-watched blueedit')
                                                .addClass('mw-changeslist-line-not-watched yellowedit')
                                                .show()
                                                .find('.unmark-edits')
                                                .remove();
                                            if (config.hidemarked.edit)
                                                $('.yellowedit')
                                                .hide();
                                            seen(all.find('span.mw-title'));
                                            if (all.length > 0)
                                                $('#hideAll')
                                                .after($('<div>')
                                                    .text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
                                                )
                                                .addClass('yellowedit');
                                            checklog();
                                        });
                                }))
                            .append($('<span>')
                                .text('.')
                            ));
                }
            });
    }


    function goldbutton() {
function checklog() {
        $('.close-edit')
api.get({
            .filter(function() {
action: 'query',
                return $(this)
format: 'json',
                    .closest('.mw-changeslist-line-watched')
list: 'watchlist',
                    .filter(notcat)
indexpageids: 1,
                    .find('a[href*="diff"]')
wllimit: 500,
                    .filter(notme)
wlprop: 'title|loginfo',
                    .filter(function() {
wlshow: 'unread',
                        return $(this)
wltype: 'log'
                            .closest('.mw-enhanced-rc-nested')
})
                            .length <= 0;
.done(function(data) {
                    })
var firstname = data.query.watchlist;
                    .length > 0 &&
if (firstname.length > 0) {
                    $(this)
firstname = firstname[0];
                    .closest('.mw-changeslist-line-watched')
$('#hideAll')
                    .find('a.mw-title')
.after($('<div>', {
                    .length <= 0;
id: 'logmessage'
            })
})
            .each(function() {
.addClass('blueedit')
            var curid = /curid=([0-9]+)/.exec($(this)
.append($('<span>')
            .closest('table, li')
.text(i18n('loga')))
            .find('a[href*="curid"]')
.append($('<span>')
            .filter(notme)
.text(firstname.title)
            .prop('href'))[1];
.css({
                var name = $(this)
fontWeight: 'bold',
                    .closest('.mw-changeslist-line-watched')
}))
                    .find('.mw-changeslist-title')
.append($('<span>')
                    .text(),
.text(i18n('logb') + firstname.logaction + ' '))
                    checked = $('.mw-changeslist-title')
.append($('<a>', {
                    .filter(function() {
href: 'https://he.wikipedia.org//w/api.php?action=query&format=rawfm&list=watchlist&' +
                        return $(this)
'indexpageids=1&wllimit=500&wlprop=title%7Cloginfo&wlshow=unread&wltype=log',
                            .text() == name;
text: i18n('logc')
                    })
}))
                    .closest('.mw-changeslist-line-watched'),
.append($('<span>')
                    nonew = checked
.text('. ' + i18n('logd') + ' '))
                    .find('abbr.newpage')
.append($('<a>', {
                    .length <= 0,
target: '_blank'
                    min = Infinity;
})
                checked
.text(i18n('loge'))
                    .find('a[href*="oldid"]')
.click(function() {
                    .filter(notme)
api.postWithToken('csrf', {
                    .filter(function() {
action: 'setnotificationtimestamp',
                        return ($(this)
titles: firstname.title
                                .text() == messages.diff || $(this)
})
                                .text() == messages.last) &&
.done(function() {
                            ($(this)
$('#logmessage')
                                .closest('.mw-enhanced-rc-nested')
.remove();
                                .closest('.mw-enhanced-watched')
var all = $(
                                .length > 0 ||
'.mw-changeslist-line-watched a.mw-changeslist-title')
                                $(this)
.filter(function() {
                                .closest('.mw-enhanced-rc-nested')
return $(this)
                                .length <= 0);
.prop('title') == firstname.title;
                    })
})
                    .each(function() {
.closest('.mw-changeslist-line-watched');
                        var old = /oldid=([0-9]+)/.exec($(this)
all.removeClass('mw-changeslist-line-watched blueedit')
                            .prop('href'));
.addClass('mw-changeslist-line-not-watched yellowedit')
                        min = old ? Math.min(min, old[1]) : min;
.show()
                    });
.find('.unmark-edits')
                if (min > 0 && min != Infinity && nonew) {
.remove();
                    $(this)
if (config.hidemarked.edit)
                        .after($('<a>', {
$('.yellowedit')
                                text: '\u200f',
.hide();
                                title: i18n('goldbutton'),
seen(all.find('span.mw-title'));
                                target: '_blank',
if (all.length > 0)
                                href: 'https://he.wikipedia.org/w/index.php?title=' + name +
$('#hideAll')
                                    '&redirect=no&diff=cur&oldid=' + min
.after($('<div>')
                            })
.text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
                            .addClass('gold-button WLM-icon gold-' + curid)
)
                            .click(function() {
.addClass('yellowedit');
                                if (config.hidemarked.edit)
checklog();
                                    $('.yellowedit')
});
                                    .hide();
}))
                                var all = $('.mw-changeslist-line-watched .mw-changeslist-title')
.append($('<span>')
                                    .filter(function() {
.text('.')
                                        return $(this)
));
                                            .text() == name;
}
                                    })
});
                                    .closest('.mw-changeslist-line-watched');
}
                                if (all.length > 1)
 
                                    $(this)
function goldbutton() {
                                    .closest('table, li')
$('.mw-changeslist-line-watched')
                                    .append($('<span>')
.find('abbr.newpage')
                                        .text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
.each(function() {
                                        .css({
var curid = /curid=([0-9]+)/.exec($(this)
                                            backgroundColor: 'red'
.closest('table, li')
                                        }));
.find('a[href*="curid"]')
                                all.removeClass('mw-changeslist-line-watched blueedit')
.filter(notme)
                                    .addClass('mw-changeslist-line-not-watched yellowedit')
.prop('href'));
                                    .show()
if (curid !== null && curid.length > 1)
                                    .find('.mark-edits, .gold-button')
defected[curid[1]] = true;
                                    .remove();
});
                                $('.gold-' + curid)
$('.close-edit')
                                .remove();
.filter(function() {
                                $('#gold-little-' + curid)
return $(this)
                                .remove();
.closest('.mw-changeslist-line-watched')
                                unseen(all.find('span.mw-title'));
.filter(notcat)
                            }));
.find('a[href*="diff"]')
                }
.filter(notme)
            });
.filter(function() {
    }
return $(this)
.closest('.mw-enhanced-rc-nested')
.length <= 0;
})
.length > 0 &&
$(this)
.closest('.mw-changeslist-line-watched')
.find('a.mw-title')
.length <= 0;
})
.each(function() {
var curid = /curid=([0-9]+)/.exec($(this)
.closest('table, li')
.find('a[href*="curid"]')
.filter(notme)
.prop('href'))[1];
var name = $(this)
.closest('.mw-changeslist-line-watched')
.find('.mw-changeslist-title')
.text(),
checked = $('.mw-changeslist-title')
.filter(function() {
return $(this)
.text() == name;
})
.closest('.mw-changeslist-line-watched'),
nonew = checked
.find('abbr.newpage')
.length <= 0,
min = Infinity;
if (nonew) {
checked
.find('a[href*="oldid"]')
.filter(notme)
.filter(function() {
return ($(this)
.text() == messages.diff || $(this)
.text() == messages.last) &&
($(this)
.closest('.mw-enhanced-rc-nested')
.closest('.mw-enhanced-watched')
.length > 0 ||
$(this)
.closest('.mw-enhanced-rc-nested')
.length <= 0);
})
.each(function() {
var old = /oldid=([0-9]+)/.exec($(this)
.prop('href'));
min = old ? Math.min(min, old[1]) : min;
});
}
if (min > 0 && min != Infinity && nonew) {
$(this)
.after($('<a>', {
text: langmark,
title: i18n('goldbutton'),
target: '_blank',
href: 'https://he.wikipedia.org/w/index.php?title=' + name +
'&redirect=no&diff=cur&oldid=' + min
})
.addClass('gold-button WLM-icon gold-' + curid)
.click(function() {
if (config.hidemarked.edit)
$('.yellowedit')
.hide();
var all = $('.mw-changeslist-line-watched .mw-changeslist-title')
.filter(function() {
return $(this)
.text() == name;
})
.closest('.mw-changeslist-line-watched');
if (all.length > 1)
$(this)
.closest('table, li')
.append($('<span>')
.text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
.css({
backgroundColor: 'red'
}));
all.removeClass('mw-changeslist-line-watched blueedit')
.addClass('mw-changeslist-line-not-watched yellowedit')
.show()
.find('.mark-edits, .gold-button')
.remove();
$('.gold-' + curid)
.remove();
$('#gold-little-' + curid)
.remove();
unseen(all.find('span.mw-title'));
}));
}
});
}


    function closeedit() {
function closeedit() {
        var btn = button('close', 'close-edit')
var btn = button('close', 'close-edit')
            .click(function() {
.click(function() {
                $(this)
$(this)
                    .closest('.mw-changeslist-line-not-watched, .mw-changeslist-line-watched')
.closest(
                    .hide();
'.mw-changeslist-line-not-watched, .mw-changeslist-line-watched')
            });
.hide();
        $('li span.mw-changeslist-date')
});
            .parent()
$('li span.mw-changeslist-date')
            .prepend(btn);
.parent()
        $('td.mw-enhanced-rc')
.prepend(btn);
            .parent()
$('td.mw-enhanced-rc')
            .filter(function() {
.parent()
                return $(this)
.filter(function() {
                    .find('td.mw-enhanced-rc-nested')
return $(this)
                    .length <= 0;
.find('td.mw-enhanced-rc-nested')
            })
.length <= 0;
            .prepend($('<td>')
})
                .html(btn)
.prepend($('<td>')
                .css({
.html(btn)
                    whiteSpace: 'nowrap'
.css({
                }));
whiteSpace: 'nowrap'
        $('td.mw-enhanced-rc')
}));
            .parent()
$('td.mw-enhanced-rc')
            .find('td.mw-enhanced-rc-nested')
.parent()
            .prev()
.find('td.mw-enhanced-rc-nested')
            .before($('<td>'));
.prev()
    }
.before($('<td>'));
}


    function notme() {
function notme() {
        return !$(this)
return !$(this)
            .hasClass('WLM-icon');
.hasClass('WLM-icon');
    }
}


    function notcat() {
function notcat() {
        return $(this)
return $(this)
            .find('a.mw-changeslist-title')
.find('a.mw-changeslist-title')
            .parent()
.parent()
            .next()
.next()
            .text() != '. .';
.text() != '. .';
    }
}


function whatsnew() {
function whatsnew() {
$('#newrevs').remove();
$('#newrevs')
new mw.Api()
.remove();
            .get({
api.get({
action: 'query',
action: 'query',
format: 'json',
format: 'json',
שורה 512: שורה 528:
wllimit: 500,
wllimit: 500,
wlprop: 'title|ids',
wlprop: 'title|ids',
wlshow: 'unread|!bot',
wlshow: 'unread',
wltype: 'edit|new',
wltype: 'edit|new',
wlstart: timestamp,
wlstart: timestamp,
wlallrev: 1,
wlallrev: 1,
errorformat: 'wikitext'
errorformat: 'wikitext'
            })
})
            .done(function(data) {
.done(function(data) {
            var ans = data.query.watchlist;
var ans = data.query.watchlist;
$('#hideAll')
$('#hideAll')
            .after($('<div>', {id: 'newrevs', text: '['})
.after($('<div>', {
            .addClass('blueedit'));
id: 'newrevs',
        newmap = {};
text: '['
        Object.keys(ans).map(function(key) {
})
        var id = ans[key].pageid;
.addClass('blueedit'));
        if (newmap[id] === null)
var newmap = {};
        newmap[id] = {title: ans[key].title};
Object.keys(ans)
        if (newmap[id].oldid === undefined || ans[key].old_revid < newmap[id].oldid)
.map(function(key) {
        newmap[id].oldid = ans[key].old_revid;
var id = ans[key].pageid;
        });
if (id in newmap) {
            Object.keys(newmap).map(function(uuu) {
if (ans[key].old_revid < newmap[id].oldid)
            var vvv = $('.gold-' + uuu).length;
newmap[id].oldid = ans[key].old_revid;
            if (vvv > 0)  
} else
            $('#newrevs')
newmap[id] = {
            .append($('<span>', {text: newmap[uuu].title + ', ', id: 'gold-little-' + uuu})
title: ans[key].title,
            .prepend($('.gold-' + uuu).clone(true, true)[0]));
oldid: ans[key].old_revid
            else if (defected[uuu])
};
            $('#newrevs')
});
            .append($('<span>', {text: newmap[uuu].title + ', '}));
Object.keys(newmap)
            else
.map(function(data) {
            $('#newrevs')
var vvv = $('.gold-' + data)
            .append($('<span>', {text: ', '})
.length;
            .prepend($('<a>', {text: newmap[uuu].title,
if (defected[data])
            href: 'https://he.wikipedia.org/w/index.php?title=' +
$('#newrevs')
            newmap[uuu].title +
.append($('<span>', {
                                    '&redirect=no&diff=cur&oldid=' + newmap[uuu].oldid,
text: newmap[data].title + ',' + langmark + ' '
            target: '_blank'
}));
            })
else if (vvv > 0)
            .click(function() {
$('#newrevs')
            $(this).parent().
.append($('<span>', {
            remove();
text: newmap[data].title + ',' + langmark + ' ',
            })));
id: 'gold-little-' + data
            });
})
            $('#newrevs')
.prepend($('.gold-' + data)
            .append($('<span>', {
.clone(true, true)[0]));
                                text: '\u200f☺',
else
                                title: 'closenew',//TODO
$('#newrevs')
                                id: 'closenew'
.append($('<span>', {
            })
text: ',' + langmark + ' '
                    .click(function() {
})
                    $('#newrevs').remove();
.prepend($('<a>', {
                    })
text: newmap[data].title,
            ).append(']');
href: 'https://he.wikipedia.org/w/index.php?title=' +
            })
newmap[data].title +
            .done(function() {
'&redirect=no&diff=cur&oldid=' + newmap[data].oldid,
            $( 'body' ).trigger( 'script-88-pretend-clicked' );
target: '_blank'
            });
})
.click(function() {
$(this)
.parent()
.
remove();
$('.yellowedit')
.hide();
$('body')
.trigger('script-88-pretend-clicked');
})));
});
$('#newrevs')
.append($('<span>', {
text: langmark,
title: i18n('closenew'),
id: 'closenew'
})
.click(function() {
$('#newrevs')
.remove();
$('body')
.trigger('script-88-pretend-clicked');
})
)
.append(']');
})
.done(function() {
$('body')
.trigger('script-88-pretend-clicked');
});
}
}


    function hider(state) {
function hider(state) {
$('#newrevs').remove();
$('#newrevs')
        if (config.edit[state])
.remove();
            $('.mw-changeslist-line-not-watched')
if (config.edit[state])
            .filter(function() {
$('table.mw-changeslist-line-not-watched, li.mw-changeslist-line-not-watched')
                return $(this)
.filter(function() {
                    .find('abbr.wikibase-edit')
return $(this)
                    .length <= 0;
.find('abbr.wikibase-edit')
            })
.length <= 0;
            .hide();
})
        if (config.log[state])
.hide();
            $('[class*="mw-changeslist-log"]')
if (config.log[state])
            .hide();
$('[class*="mw-changeslist-log"]')
        if (config.wikidata[state])
.hide();
            $('abbr.wikibase-edit')
if (config.wikidata[state])
            .closest('.mw-changeslist-line-watched, .mw-changeslist-line-not-watched')
$('abbr.wikibase-edit')
            .hide();
.closest('.mw-changeslist-line-watched, .mw-changeslist-line-not-watched')
        $('#logmessage')
.hide();
            .hide();
$('#logmessage')
        $('#watchlist-preamble')
.hide();
        .hide();
$('#watchlist-preamble')
        $('input[name="mw-watchlist-reset-submit"]')
.hide();
        .hide();
$('.WLM-mobile input[name="mw-watchlist-reset-submit"]')
    }
.hide();
}


    function unhider() {
function unhider() {
whatsnew();
whatsnew();
        $('.mw-changeslist-line-watched')
$('table.mw-changeslist-line-watched, li.mw-changeslist-line-watched')
            .show();
.show();
        if (config.edit.show)
if (config.edit.show)
            $('.mw-changeslist-line-not-watched')
$('table.mw-changeslist-line-not-watched, li.mw-changeslist-line-not-watched')
            .filter(function() {
.filter(function() {
                return $(this)
return $(this)
                    .find('abbr.wikibase-edit')
.find('abbr.wikibase-edit')
                    .length <= 0;
.length <= 0;
            })
})
            .show();
.show();
        if (config.log.show)
if (config.log.show)
            $('[class*="mw-changeslist-log"]')
$('[class*="mw-changeslist-log"]')
            .show();
.show();
        if (config.wikidata.show)
if (config.wikidata.show)
            $('abbr.wikibase-edit')
$('abbr.wikibase-edit')
            .closest('.mw-changeslist-line-not-watched')
.closest('.mw-changeslist-line-not-watched')
            .show();
.show();
        $('#logmessage')
$('#logmessage')
            .show();
.show();
        $('#watchlist-preamble')
$('#watchlist-preamble')
        .show();
.show();
        $('input[name="mw-watchlist-reset-submit"]')
$('input[name="mw-watchlist-reset-submit"]')
        .show();
.show();
    }
}


    function main() {
function main() {
        seen($('.mw-changeslist-line-watched span.mw-title'));
$('a.mw-unwatch-link')
        unseen($('.mw-changeslist-line-not-watched span.mw-title'));
.each(function() {
        flowseen();
$(this)
        categoryseen();
.prepend('\xa0\xa0\xa0')
        closeedit();
.insertAfter($(this)
        goldbutton();
.parent()
        hider('starthidden');
.parent()
    }
.children()
.children()
.last());
});
seen($('.mw-changeslist-line-watched span.mw-title'));
unseen($('.mw-changeslist-line-not-watched span.mw-title'));
flowseen();
categoryseen();
closeedit();
goldbutton();
hider('starthidden');
}


    function demo() {
function demo() {
        $('.mark-edits')
$('.mark-edits')
            .click(function() {
.click(function() {
                var id = $(this)
var id = $(this)
                    .parent()
.parent()
                    .prop('id');
.prop('id');
                $(this)
$(this)
                    .closest('table')
.closest('table')
                    .find('.mark-edits')
.find('.mark-edits')
                    .filter(function() {
.filter(function() {
                        return $(this)
return $(this)
                            .parent()
.parent()
                            .prop('id') <= id;
.prop('id') <= id;
                    })
})
                    .removeClass('mark-edits')
.removeClass('mark-edits')
                    .addClass('unmark-edits')
.addClass('unmark-edits')
                    .parent()
.parent()
                    .removeClass('blueedit')
.removeClass('blueedit')
                    .addClass('yellowedit');
.addClass('yellowedit');
                demo();
demo();
            });
});
        $('.unmark-edits')
$('.unmark-edits')
            .click(function() {
.click(function() {
                var id = $(this)
var id = $(this)
                    .parent()
.parent()
                    .prop('id');
.prop('id');
                $(this)
$(this)
                    .closest('table')
.closest('table')
                    .find('.unmark-edits')
.find('.unmark-edits')
                    .filter(function() {
.filter(function() {
                        return $(this)
return $(this)
                            .parent()
.parent()
                            .prop('id') >= id;
.prop('id') >= id;
                    })
})
                    .removeClass('unmark-edits')
.removeClass('unmark-edits')
                    .addClass('mark-edits')
.addClass('mark-edits')
                    .parent()
.parent()
                    .removeClass('yellowedit')
.removeClass('yellowedit')
                    .addClass('blueedit');
.addClass('blueedit');
                demo();
demo();
            });
});
    }
}


    if (mw.config.get('wgCanonicalSpecialPageName') == 'Watchlist') {
if (mw.config.get('wgCanonicalSpecialPageName') == 'Watchlist') {
        var langcode = mw.user.options.get('language'),
var langcode = mw.config.get('wgUserLanguage'),
            lang = langcode == 'he' ? 0 : 1,
lang = langcode == 'he' ? 0 : 1,
            extendwatchlist = mw.user.options.get('extendwatchlist'),
extendwatchlist = mw.user.options.get('extendwatchlist'),
            defected = {}, config, messages;
defected = {},
        if (extendwatchlist == 1) {
config, messages;
            $('.mw-body-content')
langmark = langcode == 'he' ? '\u200f' : '\u200e';
                .addClass(typeof window.orientation == 'undefined' ? 'WLM-desktop' : 'WLM-mobile');
if (extendwatchlist == 1) {
importStylesheet('מדיה ויקי:Gadget-WLM.css');
$('.mw-body-content')
importStylesheet('משתמש:' + mw.config.get('wgUserName') + '/WLM.css');
.addClass(typeof window.orientation == 'undefined' ? 'WLM-desktop' :
            importStylesheet('משתמש:' + mw.config.get('wgUserName') + '/common.css');
'WLM-mobile');
            new mw.Api()
importStylesheet('מדיה ויקי:Gadget-WLM.css');
                .getMessages(['diff', 'last'], {
importStylesheet('משתמש:' + mw.config.get('wgUserName') + '/WLM.css');
                    amlang: langcode
importStylesheet('משתמש:' + mw.config.get('wgUserName') + '/common.css');
                })
api.getMessages(['diff', 'last'], {
                .then(function(result) {
amlang: langcode
                    messages = result;
})
                })
.then(function(result) {
                .then(function() {
messages = result;
                    $.get(mw.util.wikiScript(), {
})
                            title: 'מדיה ויקי:Gadget-WLM.json',
.then(function() {
                            action: 'raw'
$.get(mw.util.wikiScript(), {
                        })
title: 'מדיה ויקי:Gadget-WLM.json',
                        .done(function(data) {
action: 'raw'
                            config = JSON.parse(data);
})
                            $.get(mw.util.wikiScript(), {
.done(function(data) {
                                    title: 'משתמש:' + mw.config.get('wgUserName') + '/WLM.json',
config = JSON.parse(data);
                                    action: 'raw'
$.get(mw.util.wikiScript(), {
                                })
title: 'משתמש:' + mw.config.get('wgUserName') + '/WLM.json',
                                .done(function(data1) {
action: 'raw'
                                    config = JSON.parse(data1);
})
                                })
.done(function(data1) {
                                .always(main);
config = JSON.parse(data1);
                        })
})
                        .fail(function() {
.always(main);
                            console.log('ERR: ' + i18n('jsonlost'));
})
                        });
.fail(function() {
                });
console.log('ERR: ' + i18n('jsonlost'));
            $('#mw-watchlist-form')
});
                .after($('<input>', {
});
                        id: 'hideAll',
$('#mw-watchlist-form')
                        type: 'submit',
.after($('<input>', {
                        title: i18n('help')
id: 'hideAll',
                    })
type: 'submit',
                    .click(function() {
title: i18n('help')
                        hider('hide');
})
                    }))
.click(function() {
                .after($('<span>', {
hider('hide');
                        text: 'place',
}))
                        id: 'placeholder'
.after($('<span>', {
                    })
text: 'place',
                    .css({
id: 'placeholder'
                        visibility: 'hidden',
})
                    }))
.css({
                .after($('<input>', {
visibility: 'hidden',
                        id: 'showAll',
}))
                        type: 'submit',
.after($('<input>', {
                        title: i18n('help')
id: 'showAll',
                    })
type: 'submit',
                    .click(unhider))
title: i18n('help')
                .after($('<span>', {
})
                        text: 'place',
.click(unhider))
                        id: 'placeholder'
.after($('<span>', {
                    })
text: 'place',
                    .css({
id: 'placeholder'
                        visibility: 'hidden',
})
                    }))
.css({
                .after($('<input>', {
visibility: 'hidden',
                        id: 'whatsnew',
}))
                        type: 'submit',
.after($('<input>', {
                        title: i18n('help')
id: 'whatsnew',
                    })
type: 'submit',
                    .click(whatsnew))
title: i18n('help')
                .after($('<div>', {
})
                        text: 'place',
.click(whatsnew))
                        id: 'placeline'
.after($('<div>', {
                    })
text: 'place',
                    .css({
id: 'placeline'
                        visibility: 'hidden',
})
                        fontSize: '50%'
.css({
                    }));
visibility: 'hidden',
            $('#hideAll')
fontSize: '50%'
                .attr('value', i18n('hideAll'));
}));
            $('#showAll')
$('#hideAll')
                .attr('value', i18n('showAll'));
.attr('value', i18n('hideAll'));
            $('#whatsnew')
$('#showAll')
                .attr('value', i18n('whatsnew'));
.attr('value', i18n('showAll'));
            checklog();
$('#whatsnew')
        }
.attr('value', i18n('whatsnew'));
    } else if (mw.config.get('wgPageName') == 'עזרה:WLM') {
checklog();
        $('.prescell')
}
            .attr('align', 'center')
} else if (mw.config.get('wgPageName') == 'עזרה:WLM') {
            .each(function() {
$('.prescell')
                $(this)
.attr('align', 'center')
                    .html($('<a>')
.each(function() {
                        .addClass($(this)
$(this)
                            .attr('class')));
.html($('<a>')
                $(this)
.addClass($(this)
                    .removeClass('mark-edits unmark-edits');
.attr('class')));
            });
$(this)
        $('#clear')
.removeClass('mark-edits unmark-edits');
            .prepend($('<input>', {
});
                    id: 'clearbutton',
$('#clear')
                    type: 'submit'
.prepend($('<input>', {
                })
id: 'clearbutton',
                .click(function() {
type: 'submit'
                    $('.blueedit, .yellowedit')
})
                        .removeClass('blueedit yellowedit');
.click(function() {
                }));
$('.blueedit, .yellowedit')
        $('#clearbutton')
.removeClass('blueedit yellowedit');
            .attr('value', i18n('clear'));
}));
        demo();
$('#clearbutton')
    }
.attr('value', i18n('clear'));
demo();
}
});
});

גרסה אחרונה מ־18:58, 5 בדצמבר 2022

$(function() {
	var timestamp, langmark;
	var api = new mw.Api();
	api.get({
			action: 'query',
			format: 'json',
			curtimestamp: 1
		})
		.done(function(data) {
			timestamp = data.curtimestamp;
		});

	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'],
			goldbutton: ['פתיחה וסימון של כל העריכות בדף הזה',
				'Open and mark all this page revisions'
			],
			jsonlost: ['קובץ קונפיגורציה לא אותר', 'Configuration file not found'],
			hideAll: ['הסתרת עריכות שנקראו', 'Hide all read'],
			showAll: ['הצגת עריכות שהוסתרו', 'Show all hidden'],
			whatsnew: ['מה חדש?', "What's new?"],
			closenew: ['סגירת רשימת החדשים', "Close the bar"],
			loga: ['שימו לב: רשימת המעקב כוללת רשומת יומן שלא נקראה. הדף הוא ',
				'Pay attention: the watchlist includes unread log entry. Page name: '
			],
			logb: [', הפעולה שנעשתה היא: ', ', log action: '],
			logc: ['(לפרטים)', '(details)'],
			logd: [
				'אם ברצונכם לסמן אותה כנקראה, בדקו כי אין עריכות אחרות של הדף הזה שלא נקראו,' +
				' כי גם הן יסומנו. לאחר מכן לחצו ',
				'If you want to mark it as read, check that there are' +
				' no other unwatched revisions of this page, because they will be marked too. Then click '
			],
			loge: ['כאן', 'here'],
			clear: ['ניקוי', 'clear'],
			help: ['לפרטים ראו עזרה:מנהל רשימת המעקב', '']
		};
		return msg[name][lang || 0];
	}

	function button(msg, icon) {
		return $('<a>', {
				text: langmark,
				title: i18n(msg),
				href: '#nw'
			})
			.addClass(icon + ' WLM-icon');
	}

	function seen(obj) {
		obj.filter(function() {
				return $(this)
					.closest('.mw-changeslist-line-watched')
					.filter(notcat)
					.find('a[href*="diff"]')
					.filter(notme)
					.filter(function() {
						return $(this)
							.closest('.mw-enhanced-rc-nested')
							.length <= 0;
					})
					.length > 0;
			})
			.before(button('mark', 'mark-edits')
				.click(function() {
					if (config.hidemarked.edit)
						$('.yellowedit')
						.hide();
					var curid = /curid=([0-9]+)/.exec($(this)
						.closest('table, li')
						.find('a[href*="curid"]')
						.filter(notme)
						.prop('href'))[1];
					var $this = $(this),
						diff = /diff=([0-9]+)/.exec($this.parent()
							.find('a[href*="diff"]')
							.filter(notme)
							.prop('href'))[1],
						name = $this.parent()
						.find('.mw-changeslist-title')
						.text(),
						all = $('.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"]')
								.filter(notme)
								.prop('href'));
							return thediff && $(this)
								.text() == name && thediff[1] <= diff;
						})
						.closest('.mw-changeslist-line-watched'),
						allboth = $('.mw-changeslist-line-watched .mw-changeslist-title')
						.filter(function() {
							return $(this)
								.text() == name;
						})
						.closest('.mw-changeslist-line-watched');
					api.postWithToken('csrf', {
							action: 'setnotificationtimestamp',
							titles: name,
							newerthanrevid: diff
						})
						.done(function() {
							if (all.length > 1)
								$this.closest('table, li')
								.append($('<span>')
									.text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
									.css({
										backgroundColor: 'red'
									}));
							all.removeClass('mw-changeslist-line-watched blueedit')
								.addClass('mw-changeslist-line-not-watched yellowedit')
								.show()
								.find('.mark-edits')
								.remove();
							allboth.find('.gold-button')
								.remove();
							$('#gold-little-' + curid)
								.find('a')
								.remove();
							defected[curid] = true;
							unseen(all.find('span.mw-title'));
							if (!config.hidemarked.wait)
								all.hide();
						});
				}));
	}

	function unseen(obj) {
		obj.filter(function() {
				return $(this)
					.closest('table, li')
					.filter(notcat)
					.find('a[href*="oldid"]')
					.length > 0;
			})
			.before(button('unmark', 'unmark-edits')
				.click(function() {
					var curid = /curid=([0-9]+)/.exec($(this)
						.closest('table, li')
						.find('a[href*="curid"]')
						.filter(notme)
						.prop('href'))[1];
					var $this = $(this),
						diffcond = $this
						.closest('.mw-changeslist-line-not-watched')
						.find('abbr.newpage')
						.length > 0,
						oldrev = diffcond ? 0 : /oldid=([0-9]+)/.exec($this
							.parent()
							.find('a[href*="oldid"]')
							.filter(notme)
							.prop('href'))[1],
						diff = diffcond ? 0 : /diff=([0-9]+)/.exec($this
							.parent()
							.find('a[href*="diff"]')
							.filter(notme)
							.prop('href'))[1],
						name = $this
						.next()
						.text(),
						all = $('.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"]')
								.filter(notme)
								.prop('href'));
							return thediff && $(this)
								.text() == name && thediff[1] >= diff;
						})
						.closest('.mw-changeslist-line-not-watched'),
						allboth = $('.mw-changeslist-line-watched .mw-changeslist-title')
						.filter(function() {
							return $(this)
								.text() == name;
						})
						.closest('.mw-changeslist-line-watched');
					api.postWithToken('csrf', {
							action: 'setnotificationtimestamp',
							titles: name,
							newerthanrevid: oldrev
						})
						.done(function() {
							if (all.length > 1)
								$this.closest('table, li')
								.append($('<span>')
									.text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
								);
							all.removeClass('mw-changeslist-line-not-watched yellowedit')
								.addClass('mw-changeslist-line-watched blueedit')
								.show()
								.find('.unmark-edits')
								.remove();
							allboth.find('.gold-button')
								.remove();
							$('#gold-little-' + curid)
								.find('a')
								.remove();
							defected[curid] = true;
							seen(all.find('span.mw-title'));
						});
				}));
	}

	function flowseen() {
		$('.mw-changeslist-line-watched a.mw-title')
			.parent()
			.prepend(button('markFlow', 'mark-all-flow-edits')
				.click(function() {
					var $this = $(this),
						topic = /title=[^:]*:(.+)&/.exec($this.parent()
							.find('a[href*="fromnotif"]')
							.prop('href')),
						page = $this
						.closest('.mw-changeslist-line-watched')
						.find('a.mw-title')
						.prop('title'),
						titles = topic ? page + '|נושא:' + topic[1] : page;
					api.postWithToken('csrf', {
							action: 'setnotificationtimestamp',
							titles: titles,
						})
						.done(function() {
							if (config.hidemarked.flow)
								$this.closest('.mw-changeslist-line-watched')
								.hide();
							$this.closest('.mw-changeslist-line-watched')
								.removeClass('mw-changeslist-line-watched blueedit')
								.addClass('mw-changeslist-line-not-watched yellowedit');
							$this.remove();
						});
				}));
	}

	function categoryseen() {
		$('.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) ||
					$(this)
					.find('a.mw-changeslist-title')
					.parent()
					.next()
					.text() == '. .';
			})
			.before(button('markCat', 'mark-cat-edits')
				.click(function() {
					var $this = $(this),
						page = $this.parent()
						.find('a.mw-changeslist-title')
						.prop('title');
					api.postWithToken('csrf', {
							action: 'setnotificationtimestamp',
							titles: page,
						})
						.done(function() {
							if (config.hidemarked.categorization)
								$this.closest('.mw-changeslist-line-watched')
								.hide();
							$this.closest('.mw-changeslist-line-watched')
								.removeClass('mw-changeslist-line-watched blueedit')
								.addClass('mw-changeslist-line-not-watched yellowedit');
							$this.remove();
						});
				}));
	}

	function checklog() {
		api.get({
				action: 'query',
				format: 'json',
				list: 'watchlist',
				indexpageids: 1,
				wllimit: 500,
				wlprop: 'title|loginfo',
				wlshow: 'unread',
				wltype: 'log'
			})
			.done(function(data) {
				var firstname = data.query.watchlist;
				if (firstname.length > 0) {
					firstname = firstname[0];
					$('#hideAll')
						.after($('<div>', {
								id: 'logmessage'
							})
							.addClass('blueedit')
							.append($('<span>')
								.text(i18n('loga')))
							.append($('<span>')
								.text(firstname.title)
								.css({
									fontWeight: 'bold',
								}))
							.append($('<span>')
								.text(i18n('logb') + firstname.logaction + ' '))
							.append($('<a>', {
								href: 'https://he.wikipedia.org//w/api.php?action=query&format=rawfm&list=watchlist&' +
									'indexpageids=1&wllimit=500&wlprop=title%7Cloginfo&wlshow=unread&wltype=log',
								text: i18n('logc')
							}))
							.append($('<span>')
								.text('. ' + i18n('logd') + ' '))
							.append($('<a>', {
									target: '_blank'
								})
								.text(i18n('loge'))
								.click(function() {
									api.postWithToken('csrf', {
											action: 'setnotificationtimestamp',
											titles: firstname.title
										})
										.done(function() {
											$('#logmessage')
												.remove();
											var all = $(
													'.mw-changeslist-line-watched a.mw-changeslist-title')
												.filter(function() {
													return $(this)
														.prop('title') == firstname.title;
												})
												.closest('.mw-changeslist-line-watched');
											all.removeClass('mw-changeslist-line-watched blueedit')
												.addClass('mw-changeslist-line-not-watched yellowedit')
												.show()
												.find('.unmark-edits')
												.remove();
											if (config.hidemarked.edit)
												$('.yellowedit')
												.hide();
											seen(all.find('span.mw-title'));
											if (all.length > 0)
												$('#hideAll')
												.after($('<div>')
													.text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
												)
												.addClass('yellowedit');
											checklog();
										});
								}))
							.append($('<span>')
								.text('.')
							));
				}
			});
	}

	function goldbutton() {
		$('.mw-changeslist-line-watched')
			.find('abbr.newpage')
			.each(function() {
				var curid = /curid=([0-9]+)/.exec($(this)
					.closest('table, li')
					.find('a[href*="curid"]')
					.filter(notme)
					.prop('href'));
				if (curid !== null && curid.length > 1)
					defected[curid[1]] = true;
			});
		$('.close-edit')
			.filter(function() {
				return $(this)
					.closest('.mw-changeslist-line-watched')
					.filter(notcat)
					.find('a[href*="diff"]')
					.filter(notme)
					.filter(function() {
						return $(this)
							.closest('.mw-enhanced-rc-nested')
							.length <= 0;
					})
					.length > 0 &&
					$(this)
					.closest('.mw-changeslist-line-watched')
					.find('a.mw-title')
					.length <= 0;
			})
			.each(function() {
				var curid = /curid=([0-9]+)/.exec($(this)
					.closest('table, li')
					.find('a[href*="curid"]')
					.filter(notme)
					.prop('href'))[1];
				var name = $(this)
					.closest('.mw-changeslist-line-watched')
					.find('.mw-changeslist-title')
					.text(),
					checked = $('.mw-changeslist-title')
					.filter(function() {
						return $(this)
							.text() == name;
					})
					.closest('.mw-changeslist-line-watched'),
					nonew = checked
					.find('abbr.newpage')
					.length <= 0,
					min = Infinity;
				if (nonew) {
					checked
						.find('a[href*="oldid"]')
						.filter(notme)
						.filter(function() {
							return ($(this)
									.text() == messages.diff || $(this)
									.text() == messages.last) &&
								($(this)
									.closest('.mw-enhanced-rc-nested')
									.closest('.mw-enhanced-watched')
									.length > 0 ||
									$(this)
									.closest('.mw-enhanced-rc-nested')
									.length <= 0);
						})
						.each(function() {
							var old = /oldid=([0-9]+)/.exec($(this)
								.prop('href'));
							min = old ? Math.min(min, old[1]) : min;
						});
				}
				if (min > 0 && min != Infinity && nonew) {
					$(this)
						.after($('<a>', {
								text: langmark,
								title: i18n('goldbutton'),
								target: '_blank',
								href: 'https://he.wikipedia.org/w/index.php?title=' + name +
									'&redirect=no&diff=cur&oldid=' + min
							})
							.addClass('gold-button WLM-icon gold-' + curid)
							.click(function() {
								if (config.hidemarked.edit)
									$('.yellowedit')
									.hide();
								var all = $('.mw-changeslist-line-watched .mw-changeslist-title')
									.filter(function() {
										return $(this)
											.text() == name;
									})
									.closest('.mw-changeslist-line-watched');
								if (all.length > 1)
									$(this)
									.closest('table, li')
									.append($('<span>')
										.text(' ' + all.length + ' ' + i18n('manymarked') + ' ')
										.css({
											backgroundColor: 'red'
										}));
								all.removeClass('mw-changeslist-line-watched blueedit')
									.addClass('mw-changeslist-line-not-watched yellowedit')
									.show()
									.find('.mark-edits, .gold-button')
									.remove();
								$('.gold-' + curid)
									.remove();
								$('#gold-little-' + curid)
									.remove();
								unseen(all.find('span.mw-title'));
							}));
				}
			});
	}

	function closeedit() {
		var btn = button('close', 'close-edit')
			.click(function() {
				$(this)
					.closest(
						'.mw-changeslist-line-not-watched, .mw-changeslist-line-watched')
					.hide();
			});
		$('li span.mw-changeslist-date')
			.parent()
			.prepend(btn);
		$('td.mw-enhanced-rc')
			.parent()
			.filter(function() {
				return $(this)
					.find('td.mw-enhanced-rc-nested')
					.length <= 0;
			})
			.prepend($('<td>')
				.html(btn)
				.css({
					whiteSpace: 'nowrap'
				}));
		$('td.mw-enhanced-rc')
			.parent()
			.find('td.mw-enhanced-rc-nested')
			.prev()
			.before($('<td>'));
	}

	function notme() {
		return !$(this)
			.hasClass('WLM-icon');
	}

	function notcat() {
		return $(this)
			.find('a.mw-changeslist-title')
			.parent()
			.next()
			.text() != '. .';
	}

	function whatsnew() {
		$('#newrevs')
			.remove();
		api.get({
				action: 'query',
				format: 'json',
				list: 'watchlist',
				indexpageids: 1,
				wldir: 'newer',
				wllimit: 500,
				wlprop: 'title|ids',
				wlshow: 'unread',
				wltype: 'edit|new',
				wlstart: timestamp,
				wlallrev: 1,
				errorformat: 'wikitext'
			})
			.done(function(data) {
				var ans = data.query.watchlist;
				$('#hideAll')
					.after($('<div>', {
							id: 'newrevs',
							text: '['
						})
						.addClass('blueedit'));
				var newmap = {};
				Object.keys(ans)
					.map(function(key) {
						var id = ans[key].pageid;
						if (id in newmap) {
							if (ans[key].old_revid < newmap[id].oldid)
								newmap[id].oldid = ans[key].old_revid;
						} else
							newmap[id] = {
								title: ans[key].title,
								oldid: ans[key].old_revid
							};
					});
				Object.keys(newmap)
					.map(function(data) {
						var vvv = $('.gold-' + data)
							.length;
						if (defected[data])
							$('#newrevs')
							.append($('<span>', {
								text: newmap[data].title + ',' + langmark + ' '
							}));
						else if (vvv > 0)
							$('#newrevs')
							.append($('<span>', {
									text: newmap[data].title + ',' + langmark + ' ',
									id: 'gold-little-' + data
								})
								.prepend($('.gold-' + data)
									.clone(true, true)[0]));
						else
							$('#newrevs')
							.append($('<span>', {
									text: ',' + langmark + ' '
								})
								.prepend($('<a>', {
										text: newmap[data].title,
										href: 'https://he.wikipedia.org/w/index.php?title=' +
											newmap[data].title +
											'&redirect=no&diff=cur&oldid=' + newmap[data].oldid,
										target: '_blank'
									})
									.click(function() {
										$(this)
											.parent()
											.
										remove();
										$('.yellowedit')
											.hide();
										$('body')
											.trigger('script-88-pretend-clicked');
									})));
					});
				$('#newrevs')
					.append($('<span>', {
							text: langmark,
							title: i18n('closenew'),
							id: 'closenew'
						})
						.click(function() {
							$('#newrevs')
								.remove();
							$('body')
								.trigger('script-88-pretend-clicked');
						})
					)
					.append(']');
			})
			.done(function() {
				$('body')
					.trigger('script-88-pretend-clicked');
			});
	}

	function hider(state) {
		$('#newrevs')
			.remove();
		if (config.edit[state])
			$('table.mw-changeslist-line-not-watched, li.mw-changeslist-line-not-watched')
			.filter(function() {
				return $(this)
					.find('abbr.wikibase-edit')
					.length <= 0;
			})
			.hide();
		if (config.log[state])
			$('[class*="mw-changeslist-log"]')
			.hide();
		if (config.wikidata[state])
			$('abbr.wikibase-edit')
			.closest('.mw-changeslist-line-watched, .mw-changeslist-line-not-watched')
			.hide();
		$('#logmessage')
			.hide();
		$('#watchlist-preamble')
			.hide();
		$('.WLM-mobile input[name="mw-watchlist-reset-submit"]')
			.hide();
	}

	function unhider() {
		whatsnew();
		$('table.mw-changeslist-line-watched, li.mw-changeslist-line-watched')
			.show();
		if (config.edit.show)
			$('table.mw-changeslist-line-not-watched, li.mw-changeslist-line-not-watched')
			.filter(function() {
				return $(this)
					.find('abbr.wikibase-edit')
					.length <= 0;
			})
			.show();
		if (config.log.show)
			$('[class*="mw-changeslist-log"]')
			.show();
		if (config.wikidata.show)
			$('abbr.wikibase-edit')
			.closest('.mw-changeslist-line-not-watched')
			.show();
		$('#logmessage')
			.show();
		$('#watchlist-preamble')
			.show();
		$('input[name="mw-watchlist-reset-submit"]')
			.show();
	}

	function main() {
		$('a.mw-unwatch-link')
			.each(function() {
				$(this)
					.prepend('\xa0\xa0\xa0')
					.insertAfter($(this)
						.parent()
						.parent()
						.children()
						.children()
						.last());
			});
		seen($('.mw-changeslist-line-watched span.mw-title'));
		unseen($('.mw-changeslist-line-not-watched span.mw-title'));
		flowseen();
		categoryseen();
		closeedit();
		goldbutton();
		hider('starthidden');
	}

	function demo() {
		$('.mark-edits')
			.click(function() {
				var id = $(this)
					.parent()
					.prop('id');
				$(this)
					.closest('table')
					.find('.mark-edits')
					.filter(function() {
						return $(this)
							.parent()
							.prop('id') <= id;
					})
					.removeClass('mark-edits')
					.addClass('unmark-edits')
					.parent()
					.removeClass('blueedit')
					.addClass('yellowedit');
				demo();
			});
		$('.unmark-edits')
			.click(function() {
				var id = $(this)
					.parent()
					.prop('id');
				$(this)
					.closest('table')
					.find('.unmark-edits')
					.filter(function() {
						return $(this)
							.parent()
							.prop('id') >= id;
					})
					.removeClass('unmark-edits')
					.addClass('mark-edits')
					.parent()
					.removeClass('yellowedit')
					.addClass('blueedit');
				demo();
			});
	}

	if (mw.config.get('wgCanonicalSpecialPageName') == 'Watchlist') {
		var langcode = mw.config.get('wgUserLanguage'),
			lang = langcode == 'he' ? 0 : 1,
			extendwatchlist = mw.user.options.get('extendwatchlist'),
			defected = {},
			config, messages;
		langmark = langcode == 'he' ? '\u200f' : '\u200e';
		if (extendwatchlist == 1) {
			$('.mw-body-content')
				.addClass(typeof window.orientation == 'undefined' ? 'WLM-desktop' :
					'WLM-mobile');
			importStylesheet('מדיה ויקי:Gadget-WLM.css');
			importStylesheet('משתמש:' + mw.config.get('wgUserName') + '/WLM.css');
			importStylesheet('משתמש:' + mw.config.get('wgUserName') + '/common.css');
			api.getMessages(['diff', 'last'], {
					amlang: langcode
				})
				.then(function(result) {
					messages = result;
				})
				.then(function() {
					$.get(mw.util.wikiScript(), {
							title: 'מדיה ויקי:Gadget-WLM.json',
							action: 'raw'
						})
						.done(function(data) {
							config = JSON.parse(data);
							$.get(mw.util.wikiScript(), {
									title: 'משתמש:' + mw.config.get('wgUserName') + '/WLM.json',
									action: 'raw'
								})
								.done(function(data1) {
									config = JSON.parse(data1);
								})
								.always(main);
						})
						.fail(function() {
							console.log('ERR: ' + i18n('jsonlost'));
						});
				});
			$('#mw-watchlist-form')
				.after($('<input>', {
						id: 'hideAll',
						type: 'submit',
						title: i18n('help')
					})
					.click(function() {
						hider('hide');
					}))
				.after($('<span>', {
						text: 'place',
						id: 'placeholder'
					})
					.css({
						visibility: 'hidden',
					}))
				.after($('<input>', {
						id: 'showAll',
						type: 'submit',
						title: i18n('help')
					})
					.click(unhider))
				.after($('<span>', {
						text: 'place',
						id: 'placeholder'
					})
					.css({
						visibility: 'hidden',
					}))
				.after($('<input>', {
						id: 'whatsnew',
						type: 'submit',
						title: i18n('help')
					})
					.click(whatsnew))
				.after($('<div>', {
						text: 'place',
						id: 'placeline'
					})
					.css({
						visibility: 'hidden',
						fontSize: '50%'
					}));
			$('#hideAll')
				.attr('value', i18n('hideAll'));
			$('#showAll')
				.attr('value', i18n('showAll'));
			$('#whatsnew')
				.attr('value', i18n('whatsnew'));
			checklog();
		}
	} else if (mw.config.get('wgPageName') == 'עזרה:WLM') {
		$('.prescell')
			.attr('align', 'center')
			.each(function() {
				$(this)
					.html($('<a>')
						.addClass($(this)
							.attr('class')));
				$(this)
					.removeClass('mark-edits unmark-edits');
			});
		$('#clear')
			.prepend($('<input>', {
					id: 'clearbutton',
					type: 'submit'
				})
				.click(function() {
					$('.blueedit, .yellowedit')
						.removeClass('blueedit yellowedit');
				}));
		$('#clearbutton')
			.attr('value', i18n('clear'));
		demo();
	}
});