User:BZPN/Przeglądarka.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
No edit summary Tag: Reverted |
No edit summary Tag: Manual revert |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
// Autor: BZPN |
|||
// UŻYWASZ SKRYPTU NA WŁASNĄ ODPOWIEDZIALNOŚĆ! Autor nie ponosi odpowiedzialności za ew. szkody spowodowane użyciem skryptu. |
|||
$(document).ready(function () { |
$(document).ready(function () { |
||
var pageName = mw.config.get('wgCanonicalSpecialPageName'); |
var pageName = mw.config.get('wgCanonicalSpecialPageName'); |
||
Line 30: | Line 32: | ||
$('#mw-content-text').prepend($reviewBox); |
$('#mw-content-text').prepend($reviewBox); |
||
// Podgląd edycji |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
fromrev: revid - 1, // Pobieramy poprzednią wersję |
|||
⚫ | |||
⚫ | |||
⚫ | |||
var diff = data.compare['*']; |
|||
⚫ | |||
var $modal = $(` |
|||
⚫ | |||
<div style="max-height: 400px; overflow-y: scroll;">${diff}</div> |
|||
<button id="close-modal" class="oo-ui-buttonElement-button" style="margin-top: 10px;">Zamknij</button> |
|||
</div> |
|||
⚫ | |||
⚫ | |||
// Zamknij modal po kliknięciu przycisku |
|||
⚫ | |||
$modal.remove(); |
|||
}); |
|||
}); |
|||
}); |
|||
⚫ | |||
}); |
|||
$('#review-selected-button').click(function () { |
$('#review-selected-button').click(function () { |
||
Line 105: | Line 149: | ||
$('#cancel-review').click(function () { |
$('#cancel-review').click(function () { |
||
$('#mass-review-box').hide(); |
$('#mass-review-box').hide(); |
||
⚫ | |||
// Dodanie checkboxów |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
// Dodaj przycisk podglądu edycji |
|||
⚫ | |||
⚫ | |||
⚫ | |||
var diffUrl = mw.util.getUrl(title, { diff: revid }); |
|||
⚫ | |||
var diffTable = $(data).find('.diff'); // Pobranie tabeli różnic |
|||
// Wyświetlanie podglądu w modalnym oknie |
|||
⚫ | |||
var $closeButton = $('<button style="position: absolute; top: 10px; right: 10px;">Zamknij</button>'); |
|||
⚫ | |||
$modal.append('<div class="diff-content">' + diffTable.prop('outerHTML') + '</div>'); |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
$('.diff-addedline', $modal).css('background-color', '#e6f7ff'); // Dodane linie na niebiesko |
|||
$('.diff-deletedline', $modal).css('background-color', '#ffe6e6'); // Usunięte linie na pomarańczowo |
|||
⚫ | |||
⚫ | |||
}); |
}); |
||
} |
} |
Latest revision as of 20:08, 15 September 2024
// Autor: BZPN
// UŻYWASZ SKRYPTU NA WŁASNĄ ODPOWIEDZIALNOŚĆ! Autor nie ponosi odpowiedzialności za ew. szkody spowodowane użyciem skryptu.
$(document).ready(function () {
var pageName = mw.config.get('wgCanonicalSpecialPageName');
if (pageName !== 'Contributions') {
return;
}
if ($('#mass-review-box').length === 0) {
var $reviewBox = $(`
<div id="mass-review-box" class="mw-htmlform-ooui-wrapper oo-ui-layout oo-ui-panelLayout oo-ui-panelLayout-padded oo-ui-panelLayout-framed">
<form id="review-form" class="mw-htmlform mw-htmlform-ooui oo-ui-layout oo-ui-formLayout">
<fieldset class="oo-ui-layout oo-ui-labelElement oo-ui-fieldsetLayout mw-collapsibleFieldsetLayout mw-collapsible mw-made-collapsible">
<legend role="button" class="oo-ui-fieldsetLayout-header mw-collapsible-toggle mw-collapsible-toggle-expanded" aria-expanded="true" tabindex="0">
<span class="oo-ui-iconElement-icon oo-ui-iconElement-noIcon"></span>
<span class="oo-ui-labelElement-label">Przeglądanie edycji</span>
<span class="oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement-icon oo-ui-icon-expand oo-ui-iconElement oo-ui-labelElement-invisible oo-ui-iconWidget">Expand</span>
<span class="oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement-icon oo-ui-icon-collapse oo-ui-iconElement oo-ui-labelElement-invisible oo-ui-iconWidget">Collapse</span>
</legend>
<div class="oo-ui-fieldsetLayout-group mw-collapsible-content" style="display: block;">
<div class="oo-ui-widget oo-ui-widget-enabled mw-htmlform-submit-buttons">
<button id="review-selected-button" class="oo-ui-inputWidget-input oo-ui-buttonElement-button oo-ui-buttonElement-framed oo-ui-flaggedElement-progressive" style="padding: 5px 10px; background-color: #007bff; color: #fff; border: none; cursor: pointer; border-radius: 4px;">Przejrzyj zaznaczone edycje</button>
<button id="review-all-button" class="oo-ui-inputWidget-input oo-ui-buttonElement-button oo-ui-buttonElement-framed oo-ui-flaggedElement-destructive" style="padding: 5px 10px; background-color: #ff4136; color: #fff; border: none; cursor: pointer; border-radius: 4px;">Przejrzyj wszystkie edycje</button>
<button id="cancel-review" class="oo-ui-inputWidget-input oo-ui-buttonElement-button oo-ui-buttonElement-framed" style="padding: 5px 10px; background-color: #aaa; color: #fff; border: none; cursor: pointer; border-radius: 4px;">Anuluj</button>
</div>
</div>
</fieldset>
</form>
</div>
`);
$('#mw-content-text').prepend($reviewBox);
// Podgląd edycji
$('li[data-mw-revid]').each(function () {
var $this = $(this);
var revid = $this.data('mw-revid');
var title = $this.find('.mw-contributions-title').text();
var $checkbox = $('<input type="checkbox" class="review-checkbox" style="margin-right: 5px;">')
.data('revid', revid)
.data('title', title);
var $previewButton = $('<button class="oo-ui-buttonElement-button" style="margin-left: 5px;">Podgląd</button>');
$previewButton.click(function () {
var api = new mw.Api();
api.get({
action: 'compare',
fromrev: revid - 1, // Pobieramy poprzednią wersję
torev: revid,
format: 'json'
}).done(function (data) {
var diff = data.compare['*'];
// Tworzymy okno modalne
var $modal = $(`
<div class="oo-ui-dialog" style="position: fixed; top: 10%; left: 50%; transform: translateX(-50%); width: 80%; background: white; padding: 20px; border: 1px solid black; z-index: 1000;">
<div style="max-height: 400px; overflow-y: scroll;">${diff}</div>
<button id="close-modal" class="oo-ui-buttonElement-button" style="margin-top: 10px;">Zamknij</button>
</div>
`);
$('body').append($modal);
// Zamknij modal po kliknięciu przycisku
$('#close-modal').click(function () {
$modal.remove();
});
});
});
$this.prepend($checkbox).append($previewButton);
});
$('#review-selected-button').click(function () {
var api = new mw.Api();
var selectedRevisions = $('input[type="checkbox"].review-checkbox:checked').map(function () {
return {
title: $(this).data('title'),
revid: $(this).data('revid')
};
}).get();
if (selectedRevisions.length === 0) {
alert('Nie zaznaczono żadnych edycji do przejrzenia.');
return;
}
var reviewPromises = selectedRevisions.map(function (contrib) {
return api.postWithToken('csrf', {
action: 'review',
revid: contrib.revid,
title: contrib.title
});
});
Promise.all(reviewPromises).then(function () {
alert('Zaznaczone edycje zostały przejrzane!');
location.reload();
}).catch(function (error) {
console.error('Wystąpił błąd podczas przeglądania edycji:', error);
alert('Wystąpił błąd podczas przeglądania edycji.');
});
});
$('#review-all-button').click(function () {
var userName = mw.config.get('wgRelevantUserName');
var api = new mw.Api();
api.get({
action: 'query',
list: 'usercontribs',
ucuser: userName,
uclimit: 'max',
ucprop: 'ids|title',
format: 'json'
}).done(function (data) {
var contributions = data.query.usercontribs;
if (contributions.length === 0) {
alert('Brak edycji do przejrzenia.');
return;
}
var reviewPromises = contributions.map(function (contrib) {
return api.postWithToken('csrf', {
action: 'review',
revid: contrib.revid,
title: contrib.title
});
});
Promise.all(reviewPromises).then(function () {
alert('Wszystkie edycje zostały przejrzane!');
location.reload();
}).catch(function (error) {
console.error('Wystąpił błąd podczas przeglądania:', error);
alert('Wystąpił błąd podczas przeglądania.');
});
}).fail(function (error) {
console.error('Błąd przy pobieraniu wkładu użytkownika:', error);
alert('Błąd przy pobieraniu wkładu użytkownika.');
});
});
$('#cancel-review').click(function () {
$('#mass-review-box').hide();
});
}
});