MediaWiki:Common.js
Jump to navigation
Jump to search
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)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
$(function () {
var link = $('<a>')
.attr('href', '/wiki/Deklaracja_dostepnosci')
.text('Deklaracja dostępności');
$('<li>').append(link).appendTo('#footer-places').parent();
});
$(function () {
const namespace = mw.config.get('wgNamespaceNumber');
if (namespace !== 120) return; // tylko Item (Q)
const entityId = mw.config.get('wgTitle');
const pageName = mw.config.get('wgPageName');
const userLang = mw.config.get('wgUserLanguage');
const url = window.location.href;
// 📅 data dostępu
const now = new Date();
const messageCurrentDate = `${String(now.getDate()).padStart(2, '0')}.${String(now.getMonth() + 1).padStart(2, '0')}.${now.getFullYear()}`;
// 🔄 wszystkie requesty naraz (bez błędów timingowych)
Promise.all([
// label
$.getJSON(mw.util.wikiScript('api'), {
action: 'wbgetentities',
ids: entityId,
props: 'labels',
languages: userLang,
format: 'json'
}),
// ostatnia edycja
$.getJSON(mw.util.wikiScript('api'), {
action: 'query',
prop: 'revisions',
titles: pageName,
rvprop: 'timestamp',
format: 'json'
})
]).then(function ([labelData, revisionData]) {
// 🏷️ LABEL
let messageLabel = entityId;
const entity = labelData.entities[entityId];
if (entity.labels && entity.labels[userLang]) {
messageLabel = entity.labels[userLang].value;
}
// 🕓 DATA EDYCJI
let messageEdit = '';
const pages = revisionData.query.pages;
const page = pages[Object.keys(pages)[0]];
if (page?.revisions?.length > 0) {
const lastEdit = new Date(page.revisions[0].timestamp);
messageEdit = `${String(lastEdit.getDate()).padStart(2, '0')}.${String(lastEdit.getMonth() + 1).padStart(2, '0')}.${lastEdit.getFullYear()}`;
}
// 🧾 FINALNY TEKST
const final_message = 'Referując do tego elementu użyj:';
const citationHTML = `
${messageLabel},
<a href="${url}" target="_blank">${url}</a>,
[ostatnia edycja strony: ${messageEdit}, dostęp: ${messageCurrentDate}].
`;
const box = $(`
<div class="item-message">
${final_message}<br>
<span id="copy-target">${citationHTML}</span>
<button id="copy-button" title="Kopiuj" style="margin-left:8px;cursor:pointer;">⧉</button>
</div>
`);
$('#content').prepend(box);
// 📋 kopiowanie (HTML + tekst)
$('#copy-button').on('click', function () {
const plainText = $('#copy-target').text();
const htmlText = $('#copy-target').html();
const item = new ClipboardItem({
'text/plain': new Blob([plainText], { type: 'text/plain' }),
'text/html': new Blob([htmlText], { type: 'text/html' })
});
navigator.clipboard.write([item]).then(() => {
$(this).text('✔');
setTimeout(() => $(this).text('⧉'), 1500);
});
});
});
});