MediaWiki:Common.js
From WikiZagłębie
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* "Duplicate article" + "Write an article" w sidebarze (tylko NS=0, view, nie strona główna) */
mw.loader.using([ 'mediawiki.util', 'mediawiki.api' ]).then(function () {
$(function () {
// tylko przestrzeń główna i zwykły podgląd
if (mw.config.get('wgNamespaceNumber') !== 0) return;
if (mw.config.get('wgAction') !== 'view') return;
if (mw.config.get('wgIsMainPage')) return;
// wybierz portlet (zależnie od skórki)
var targetPortlet =
document.getElementById('p-navigation') ? 'p-navigation' :
(document.getElementById('p-tb') ? 'p-tb' : null);
// fallback: weź pierwszy dostępny portlet (różne skórki)
if (!targetPortlet) {
var firstPortlet = $('.mw-portlet').first().attr('id');
if (firstPortlet) targetPortlet = firstPortlet;
}
if (!targetPortlet) return;
var api = new mw.Api();
var srcPage = mw.config.get('wgPageName'); // np. "Sosnowiec"
var srcTitle = mw.config.get('wgTitle'); // np. "Sosnowiec"
// 1) Napisz artykuł – kreator Specjalna:Utwórz_artykuł (tytuł, kategorie, infobox sugerowany z kategorii)
mw.util.addPortletLink(
targetPortlet, mw.util.getUrl( 'Special:Create_article' ), 'Write an article', 'n-write-article',
'New article wizard: title, categories, and infobox.'
);
// 2) Powiel artykuł (preload treścią bieżącej strony)
var link = mw.util.addPortletLink(
targetPortlet,
'#',
'Duplicate article',
'n-duplicate-article',
'Create a new page using this page\'s content as a preload.'
);
if (!link) return;
link.addEventListener('click', function (e) {
e.preventDefault();
var defaultTitle = srcTitle + ' (kopia)';
var newTitle = window.prompt('New page title:', defaultTitle);
if (!newTitle) return;
api.get({ action: 'query', titles: newTitle, formatversion: 2 }).then(function (data) {
var page = data && data.query && data.query.pages && data.query.pages[0];
if (page && !page.missing) {
window.alert('Page "' + newTitle + '" already exists. Choose a different title.');
return;
}
var url = mw.util.getUrl(newTitle, { action: 'edit', preload: srcPage });
window.location.href = url;
});
});
});
});