MediaWiki:Gadget-didYouKnow.js
Перейти к навигации
Перейти к поиску
Замечание. Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
- Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
- Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
- Opera: Перейдите в Menu → Настройки (Opera → Настройки на Mac), а затем Безопасность → Очистить историю посещений → Кэшированные изображения и файлы
(function() {
if (mw.config.get("wgTitle") != 'Знаете ли вы/Подготовка следующего выпуска')
return;
var anchor = $('#dyk-start');
if (anchor.parent().is('p'))
anchor = anchor.parent();
var announces = anchor.nextAll('h3').map(function(index) {
var orders = $(this).find('.dyk-status').map(function() {
return $(this).attr('data-sort') || -Number.MAX_VALUE;
}).get().map(parseFloat);
orders.push(Number.MAX_VALUE); // for those who don't have status yet
var content = $(this).nextUntil('h3, noscript, h2');
return {
originalOrder: index,
order: Math.min.apply(null, orders),
content: $(this).add(content),
isSelected: content.find('.dyk-check').length > 0
};
}).get();
function sort(getOrder) {
var ordered = [];
for(var i = 0; i < announces.length; i++) {
var announce = announces[i];
var order = getOrder(announce);
var found = false;
for(var j = ordered.length - 1; j >= 0; j--) {
var o = ordered[j];
if (getOrder(o) <= order) {
found = true;
if (j != ordered.length) {
announce.content.insertAfter(ordered[j].content.last());
}
ordered.splice(j + 1, 0, announce);
break;
}
}
if (!found) {
if (ordered.length) {
announce.content.insertBefore(ordered[0].content.first());
}
ordered.splice(0, 0, announce);
}
}
}
var sorted = false;
function updateButtonTitle(b) {
b.text(!sorted ? 'Отсортировать' : 'Отсортировано');
};
function updateBackground() {
announces.forEach(function(a) {
$(a.content).css('background-color', sorted && a.isSelected ? '#eee' : '');
});
}
var button = $('<a>')
.addClass('plainlinks mw-ui-button mw-ui-primary')
.attr('href', '#')
.click(function(e) {
e.preventDefault();
if (!sorted)
var f = function(a) { return a.isSelected ? Number.MAX_VALUE : a.order; };
else
var f = function(a) { return a.originalOrder; };
sort(f);
sorted = !sorted;
$(this).css('background-color', sorted ? '#136' : '');
updateButtonTitle($(this));
updateBackground();
})
.insertBefore($('#dyk-start'));
updateButtonTitle(button);
})();