MediaWiki:Common.js: Różnice pomiędzy wersjami
Wygląd
Nie podano opisu zmian |
Nie podano opisu zmian |
||
| Linia 203: | Linia 203: | ||
var url = | var url = | ||
'https:// | 'https://arcarium.manuscripta.bj.uj.edu.pl/dlibra/results?action=AdvancedSearchAction&type=-3&val1=AND:*:' + | ||
qId + | qId + | ||
'&qf1=availability:Available'; | '&qf1=availability:Available'; | ||
Aktualna wersja na dzień 15:10, 31 lip 2026
mw.loader.using(['mediawiki.util']).then(function () {
var summaryRunTimer = null;
var aliasSortTimer = null;
var propertiesToSummarize = [
'P6',
'P7',
'P29',
'P20',
'P19',
'P17',
'P25',
'P16',
'P26',
'P27',
'P10'
];
var urlProperties = [
'P16',
'P25',
'P26'
];
function escapeHtml(text) {
return String(text)
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
function sortAliases() {
var aliasContainers = document.querySelectorAll('.wikibase-aliasesview-list');
aliasContainers.forEach(function (container) {
var items = Array.from(container.querySelectorAll('.wikibase-aliasesview-list-item'));
if (items.length <= 1) {
return;
}
items.sort(function (a, b) {
var textA = a.textContent.trim().toLowerCase();
var textB = b.textContent.trim().toLowerCase();
return textA.localeCompare(textB, 'pl');
});
items.forEach(function (item) {
container.appendChild(item);
});
});
}
function getPropertySummary(propertyId) {
var group = document.getElementById(propertyId);
if (!group) {
return null;
}
var labelElement = group.querySelector('.wikibase-statementgroupview-property-label a');
var label = labelElement ? labelElement.textContent.trim() : propertyId;
var valueElements = group.querySelectorAll(
'.wikibase-statementview-mainsnak-container .wikibase-snakview-value'
);
var values = [];
valueElements.forEach(function (valueElement) {
var cloned = valueElement.cloneNode(true);
cloned.querySelectorAll('.wb-calendar-name').forEach(function (el) {
el.remove();
});
var value = cloned.textContent.trim().replace(/\s+/g, ' ');
if (value && values.indexOf(value) === -1) {
values.push(value);
}
});
if (values.length === 0) {
return null;
}
return {
id: propertyId,
label: label,
values: values
};
}
function renderValue(propertyId, value) {
if (urlProperties.indexOf(propertyId) === -1) {
return escapeHtml(value);
}
return '<a href="' + escapeHtml(value) + '" target="_blank" rel="noopener noreferrer">' +
escapeHtml(value) +
'</a>';
}
function replaceHeadingAliasesWithMul() {
var heading = document.querySelector('.wikibase-entitytermsview-heading');
if (!heading) {
return;
}
var descriptionElement = heading.querySelector('.wikibase-entitytermsview-heading-description');
if (!descriptionElement) {
return;
}
var aliasesElement = heading.querySelector('.wikibase-entitytermsview-heading-aliases');
if (!aliasesElement) {
aliasesElement = document.createElement('div');
aliasesElement.className = 'wikibase-entitytermsview-heading-aliases';
descriptionElement.insertAdjacentElement('afterend', aliasesElement);
}
var mulAliases = document.querySelectorAll(
'.wikibase-entitytermsforlanguageview-mul .wikibase-aliasesview-list-item'
);
var aliases = [];
mulAliases.forEach(function (aliasElement) {
var alias = aliasElement.textContent.trim().replace(/\s+/g, ' ');
if (alias && aliases.indexOf(alias) === -1) {
aliases.push(alias);
}
});
if (aliases.length === 0) {
return;
}
aliasesElement.classList.remove('wb-empty');
aliasesElement.innerHTML =
'<ul class="wikibase-entitytermsview-aliases">' +
aliases.map(function (alias) {
return '<li class="wikibase-entitytermsview-aliases-alias" data-aliases-separator="|">' +
escapeHtml(alias) +
'</li>';
}).join('') +
'</ul>';
}
function replaceHeadingDescriptionWithSummary() {
var summaryLines = [];
var descriptionElement = document.querySelector('.wikibase-entitytermsview-heading-description');
propertiesToSummarize.forEach(function (propertyId) {
var summary = getPropertySummary(propertyId);
if (summary) {
summaryLines.push(summary);
}
});
if (!descriptionElement || summaryLines.length === 0) {
return;
}
descriptionElement.classList.remove('wb-empty');
descriptionElement.innerHTML = summaryLines.map(function (summary) {
var renderedValues = summary.values.map(function (value) {
return renderValue(summary.id, value);
}).join(' | ');
return '<div class="arcarium-summary-line">' +
'<strong>' + escapeHtml(summary.label) + ':</strong> ' +
renderedValues +
'</div>';
}).join('');
}
function addArcariumButton() {
var qIdElement = document.querySelector('.wikibase-title-id');
if (!qIdElement || document.querySelector('.arcarium-link-button')) {
return;
}
var match = qIdElement.textContent.match(/Q[0-9]+/);
if (!match) {
return;
}
var qId = match[0];
var url =
'https://arcarium.manuscripta.bj.uj.edu.pl/dlibra/results?action=AdvancedSearchAction&type=-3&val1=AND:*:' +
qId +
'&qf1=availability:Available';
var button = document.createElement('a');
button.href = url;
button.target = '_blank';
button.rel = 'noopener noreferrer';
button.className = 'arcarium-link-button';
button.innerHTML = 'Arcarium Manuscripta <span class="arcarium-external-icon">↗</span>';
qIdElement.insertAdjacentElement('afterend', button);
}
function updateHeadingSummary() {
replaceHeadingDescriptionWithSummary();
replaceHeadingAliasesWithMul();
}
function runSort() {
clearTimeout(aliasSortTimer);
aliasSortTimer = setTimeout(sortAliases, 100);
}
function runSummary() {
clearTimeout(summaryRunTimer);
summaryRunTimer = setTimeout(updateHeadingSummary, 150);
}
function runAll() {
runSort();
runSummary();
addArcariumButton();
setTimeout(addArcariumButton, 500);
setTimeout(addArcariumButton, 1500);
}
$(document).ready(runAll);
mw.hook('wikipage.content').add(runAll);
mw.hook('wikibase.entityPage.entityLoaded').add(runAll);
$(document).ajaxComplete(function (event, xhr, settings) {
if (!settings || !settings.data) {
return;
}
if (
typeof settings.data === 'string' &&
(
settings.data.includes('action=wbsetaliases') ||
settings.data.includes('action=wbsetdescription') ||
settings.data.includes('action=wbsetclaim') ||
settings.data.includes('action=wbeditentity')
)
) {
runAll();
}
});
});
$( function () {
var $search = $( '#p-search .vector-typeahead-search-container' );
if ( !$search.length || $( '#arcarium-search-link' ).length ) {
return;
}
var lang = mw.config.get( 'wgUserLanguage' );
var text = lang === 'pl' ? 'Wyszukiwanie zaawansowane' : 'Advanced search';
$( '<div id="arcarium-search-link" class="arcarium-header-link">' +
'<a href="https://arcarium.index.bj.uj.edu.pl/sparql/">' + text + '</a>' +
'</div>' ).insertAfter( '#searchform' );
} );
$( function () {
var isLoggedIn = mw.config.get( 'wgUserName' ) !== null;
document.body.classList.toggle( 'arcarium-user-logged-in', isLoggedIn );
document.body.classList.toggle( 'arcarium-user-logged-out', !isLoggedIn );
} );