Ткибульский муниципалитет
- 1 year ago
- 0
- 0
После
сохранения или
недавних изменений
очистите кэш браузера
.
Возможно,
этот код документирован
.
(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
return {
originalOrder: index,
order: Math.min.apply(null, orders),
anchor: this,
isSelected: getContent(this).find('.dyk-check').length > 0
};
}).get();
function getContent(h3) {
return $(h3).add($(h3).nextUntil('h3, noscript, h2'))
}
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) {
getContent(announce.anchor).insertAfter(getContent(ordered[j].anchor).last());
}
ordered.splice(j + 1, 0, announce);
break;
}
}
if (!found) {
if (ordered.length) {
getContent(announce.anchor).insertBefore(getContent(ordered[0].anchor).first());
}
ordered.splice(0, 0, announce);
}
}
}
var sorted = false;
function updateButtonTitle(b) {
b.text(!sorted ? 'Отсортировать' : 'Отсортировано');
};
function updateBackground() {
announces.forEach(function(a) {
getContent(a.anchor).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();
var f = !sorted
? function(a) { return a.isSelected ? Number.MAX_VALUE : a.order; }
: function(a) { return a.originalOrder; };
sort(f);
sorted = !sorted;
$(this).css('background-color', sorted ? '#136' : '');
updateButtonTitle($(this));
updateBackground();
})
.insertBefore($('#dyk-start'));
updateButtonTitle(button);
})();