Bikarhêner:Balyozxane/kontrola-wergerê.js
(Ji Wîkîferheng:KRW hat beralîkirin)
Zanibe: Piştî weşandinê, ji bo dîtina guhartinan dibe ku hewce be "cache"ya geroka xwe paqij bikî.
- Firefox / Safari: Pê li Shift û Reload bike an jî Ctrl-F5 an Ctrl-R bike (ji bo Mac: ⌘-R)
- Google Chrome: Pê li Ctrl-Shift-R (ji bo Mac: ⌘-Shift-R) bike
- Internet Explorer / Edge: Pê li Ctrl û Refresh bike, an jî Ctrl-F5 bike
- Opera: Pê li Ctrl-F5 bike.
$(document).ready(function() {
mw.loader.addStyleTag('.button { display: inline-block; text-align: center; margin-top: 10px; margin-bottom: 10px }');
mw.loader.addStyleTag('.heading { font-size: 20px; text-align: center; margin: 10px; width:90%; font-weight: bold }');
mw.loader.addStyleTag('.container { width: 415px; height:150px }');
mw.loader.using(["oojs-ui", "mediawiki.api"], function() {
let expandedPanel; // Declare expandedPanel variable
$('.popup-trigger').click(function(event) {
event.preventDefault();
const trigger = $(this);
const templateContainer = trigger.closest('.werger-template-info');
// Retrieve the language code from the data-template-info attribute
const langCode = templateContainer.attr('data-template-info');
// OOUI widgets for main menu welcome panel
warningHeading = new OO.ui.LabelWidget({
label: "Kontrol bike \n",
classes: ["heading"],
});
warningContent = new OO.ui.LabelWidget({
label: "Eger xeletî tine be, ji kerema xwe re vê şablonê rakin!",
classes: ["label"],
flags: ['warning']
}),
controlButton = new OO.ui.ButtonWidget({
label: 'Wek kontrolkirî nîşan bide',
classes: ["button"],
flags: ["primary", "progressive"]
}),
closeButton = new OO.ui.ButtonWidget({
label: 'Bigre',
flags: ["normal"]
}),
warningPanel = new OO.ui.PanelLayout({
content: [
warningHeading,
warningContent,
controlButton,
closeButton
],
padded: true,
}),
summaryInput = new OO.ui.TextInputWidget({
label: 'Kurte',
value: 'Hat kontrolkirin: --' + langCode + ' ([[WF:KRW]])'
});
removeButton = new OO.ui.ButtonWidget({
label: 'Şablonê rake',
flags: ['primary', 'destructive'],
classes: ['button']
});
closeButton2 = new OO.ui.ButtonWidget({
label: 'Bigre',
flags: ["normal"]
}),
// Create edit summary panel
editSummaryPanel = new OO.ui.PanelLayout({
content: [
summaryInput,
removeButton,
closeButton2
],
padded: true,
});
var stack = new OO.ui.StackLayout({
classes: ["container"],
items: [warningPanel, editSummaryPanel],
});
// Create a popup widget
const popUp = new OO.ui.PopupWidget({
align: "forwards",
$floatableContainer: $(templateContainer),
$content: stack.$element,
padded: true,
popup: false,
width: 400,
height: 200,
hideWhenOutOfView: true,
autoClose: true,
hideCloseButton: false,
});
// Add an event listener to the popup's 'close' event
popUp.on('closing', function() {
popUp.toggle(false);
});
// Attach popup to "Show Info" link
popUp.$element.appendTo($('body')); // Append the popup to the body
popUp.toggle();
// When "Wek kontrolkirî nîşan bide" button is clicked, switch to the edit summary panel
controlButton.on('click', function() {
expandedPanel = stack.getCurrentItem(); // Set expandedPanel
stack.setItem(expandedPanel === warningPanel ? editSummaryPanel : warningPanel);
});
closeButton.on('click', function() {
popUp.toggle();
});
closeButton2.on('click', function() {
popUp.toggle();
});
// Remove popup content and template when "Remove Template" is clicked
removeButton.on('click', function() {
const clickedTemplateContainer = templateContainer;
// Fetch the page content using MediaWiki API
$.ajax({
url: 'https://ku.wiktionary.org/w/api.php',
type: 'GET',
dataType: 'json',
data: {
action: 'query',
prop: 'revisions',
rvprop: 'content',
titles: mw.config.get('wgPageName'), // Get the current page title
format: 'json',
formatversion: 2,
origin: '*',
},
success: function(data) {
console.log('Page content data:', data);
const templatePattern = new RegExp(`\n\n=== Çavkanî ===\n{{rûpela wergerê\\|${langCode}\\|[^}]+}}`);
const matches = data.query.pages[0].revisions[0].content.match(templatePattern);
if (matches && matches.length > 0) {
const pageContent = data.query.pages[0].revisions[0].content;
const editedContent = pageContent.replace(matches[0], '');
// Call the MediaWiki API to edit the page with the template removed
$.ajax({
url: 'https://ku.wiktionary.org/w/api.php',
type: 'POST',
data: {
action: 'edit',
title: mw.config.get('wgPageName'),
summary: summaryInput.getValue(),
text: editedContent,
token: mw.user.tokens.get('csrfToken')
},
success: function(editData) {
// Handle success response
mw.notify('Şablon hat rakirin, rûpel tê barkirin...');
// Remove the popup content and template container
clickedTemplateContainer.remove();
popUp.toggle();
// Reload the page
location.reload();
},
error: function(error) {
// Handle error
mw.notify('Xeletî di guhartina rûpelê de:', error);
},
});
} else {
// Handle case where clicked template pattern was not found
mw.notify('Şablona klîkkirî di rûpela de tine ye');
}
},
error: function(error) {
mw.notify('Xeletî di bidestxistina naveroka rûpelê de:', error);
},
});
});
});
});
});