MediaWiki:Common.js: Difference between revisions
From Artifacts of Capitalism
No edit summary |
No edit summary |
||
| Line 46: | Line 46: | ||
script.async = true; | script.async = true; | ||
script.src = 'https://cse.google.com/cse.js?cx=b194aa5e4d64344ad'; | script.src = 'https://cse.google.com/cse.js?cx=b194aa5e4d64344ad'; | ||
document.body.appendChild(script); | document.body.appendChild(script); | ||
}); | }); | ||
// Open | // Open external links in new tab | ||
$(document).ready(function() { | $(document).ready(function() { | ||
$('a.external').attr('target', '_blank'); | $('a.external').attr('target', '_blank'); | ||
| Line 67: | Line 61: | ||
const realNameInput = document.getElementById('wpRealName'); | const realNameInput = document.getElementById('wpRealName'); | ||
if (!realNameInput) return; | if (!realNameInput) return; | ||
if (document.getElementById('wpAffiliation')) return; | if (document.getElementById('wpAffiliation')) return; | ||
| Line 77: | Line 68: | ||
affDiv.innerHTML = ` | affDiv.innerHTML = ` | ||
<label for="wpAffiliation">Affiliation</label> | <label for="wpAffiliation">Affiliation</label> | ||
<input type="text" id="wpAffiliation" name="wpAffiliation" | <input type="text" id="wpAffiliation" name="wpAffiliation" required class="mw-ui-input form-control"/> | ||
`; | `; | ||
| Line 85: | Line 75: | ||
instDiv.innerHTML = ` | instDiv.innerHTML = ` | ||
<label for="wpInstitutionalEmail">Institutional Email</label> | <label for="wpInstitutionalEmail">Institutional Email</label> | ||
<input type="email" id="wpInstitutionalEmail" name="wpInstitutionalEmail" | <input type="email" id="wpInstitutionalEmail" name="wpInstitutionalEmail" required class="mw-ui-input form-control"/> | ||
`; | `; | ||
| Line 102: | Line 91: | ||
// === Artifact Network Map Connections === | // === Artifact Network Map Connections (FINAL) === | ||
mw.hook('wikipage.content').add(function () { | mw.hook('wikipage.content').add(function () { | ||
if (mw.config.get('wgPageName') !== 'Artifact_Map') return; | if (mw.config.get('wgPageName') !== 'Artifact_Map') return; | ||
| Line 112: | Line 100: | ||
function waitForMap(callback) { | function waitForMap(callback) { | ||
var attempts = 0; | var attempts = 0; | ||
var maxAttempts = | var maxAttempts = 30; | ||
var interval = setInterval(function () { | var interval = setInterval(function () { | ||
| Line 145: | Line 133: | ||
} | } | ||
var data = JSON.parse(raw); | var data; | ||
try { | |||
data = JSON.parse(raw); | |||
} catch (e) { | |||
console.error('[Artifact Map] JSON parse error:', e); | |||
return; | |||
} | |||
console.log('[Artifact Map] Data loaded:', data); | console.log('[Artifact Map] Data loaded:', data); | ||
// Build lookup table | // Build lookup table using _pageName (CRITICAL FIX) | ||
var lookup = {}; | var lookup = {}; | ||
data.forEach(function(item) { | data.forEach(function(item) { | ||
if (item. | if (item._pageName && item.Latitude && item.Longitude) { | ||
lookup[item. | lookup[item._pageName] = [ | ||
parseFloat(item.Latitude), | parseFloat(item.Latitude), | ||
parseFloat(item.Longitude) | parseFloat(item.Longitude) | ||
| Line 163: | Line 158: | ||
// Draw connections | // Draw connections | ||
data.forEach(function(item) { | data.forEach(function(item) { | ||
var fromCoords = lookup[item. | if (!item.Related_artifacts || !item._pageName) return; | ||
var fromCoords = lookup[item._pageName]; | |||
if (!fromCoords) return; | if (!fromCoords) return; | ||
| Line 171: | Line 167: | ||
relatedList.forEach(function(rel) { | relatedList.forEach(function(rel) { | ||
var target = rel.trim(); | var target = rel.trim(); | ||
var toCoords = lookup[target]; | var toCoords = lookup[target]; | ||
if (toCoords) { | if (toCoords) { | ||
console.log('[Artifact Map] Drawing line:', item. | console.log('[Artifact Map] Drawing line:', item._pageName, '→', target); | ||
L.polyline([fromCoords, toCoords], { | L.polyline([fromCoords, toCoords], { | ||
| Line 183: | Line 180: | ||
dashArray: "4,6" | dashArray: "4,6" | ||
}).addTo(map); | }).addTo(map); | ||
} else { | |||
console.log('[Artifact Map] No match for:', target); | |||
} | } | ||
}); | }); | ||
}); | }); | ||
Revision as of 02:59, 19 March 2026
// Ensure viewport meta exists (iOS layout fix)
(function () {
if (!document.querySelector('meta[name="viewport"]')) {
var m = document.createElement('meta');
m.name = 'viewport';
m.content = 'width=device-width, initial-scale=1, shrink-to-fit=no';
document.head.appendChild(m);
}
})();
// Hide Draft namespace checkbox (except for approvers)
mw.hook('wikipage.content').add(function ($c) {
var groups = mw.config.get('wgUserGroups') || [];
if (groups.indexOf('approver') !== -1) return;
$c.find('input[name="ns' + 3000 + '"]').closest('label, .mw-advancedSearch-ns_option').hide();
});
// Load Google CSE only on Advanced_search page
mw.loader.using('mediawiki.util').then(function () {
var page = mw.config.get('wgPageName');
if (page !== 'Artifacts_of_Capitalism:Advanced_search') return;
console.log('[CSE] Loading on:', page);
window.__gcse = {
searchCallbacks: {
ready: function () {
try {
var params = new URLSearchParams(window.location.search);
var q = params.get('q');
if (q) {
var hash = 'gsc.tab=0&gsc.q=' + encodeURIComponent(q);
if (!window.location.hash.includes('gsc.q=')) {
window.location.hash = hash;
console.log('[CSE] Applied query:', q);
}
}
} catch (err) {
console.warn('[CSE] Query error:', err);
}
}
}
};
var script = document.createElement('script');
script.async = true;
script.src = 'https://cse.google.com/cse.js?cx=b194aa5e4d64344ad';
document.body.appendChild(script);
});
// Open external links in new tab
$(document).ready(function() {
$('a.external').attr('target', '_blank');
});
// Add fields to CreateAccount form
mw.loader.using('mediawiki.util').then(function () {
if (mw.config.get('wgCanonicalSpecialPageName') !== 'CreateAccount') return;
const observer = new MutationObserver(() => {
const realNameInput = document.getElementById('wpRealName');
if (!realNameInput) return;
if (document.getElementById('wpAffiliation')) return;
const affDiv = document.createElement('div');
affDiv.className = 'mw-input';
affDiv.innerHTML = `
<label for="wpAffiliation">Affiliation</label>
<input type="text" id="wpAffiliation" name="wpAffiliation" required class="mw-ui-input form-control"/>
`;
const instDiv = document.createElement('div');
instDiv.className = 'mw-input';
instDiv.innerHTML = `
<label for="wpInstitutionalEmail">Institutional Email</label>
<input type="email" id="wpInstitutionalEmail" name="wpInstitutionalEmail" required class="mw-ui-input form-control"/>
`;
const realNameDiv =
realNameInput.closest('.mw-input, .form-group, p') || realNameInput.parentNode;
realNameDiv.insertAdjacentElement('afterend', instDiv);
realNameDiv.insertAdjacentElement('afterend', affDiv);
observer.disconnect();
});
observer.observe(document.body, { childList: true, subtree: true });
});
// === Artifact Network Map Connections (FINAL) ===
mw.hook('wikipage.content').add(function () {
if (mw.config.get('wgPageName') !== 'Artifact_Map') return;
console.log('[Artifact Map] Hook fired');
function waitForMap(callback) {
var attempts = 0;
var maxAttempts = 30;
var interval = setInterval(function () {
attempts++;
if (window.mw && mw.leafletMap && mw.leafletMap.map) {
clearInterval(interval);
console.log('[Artifact Map] Leaflet ready');
callback(mw.leafletMap.map);
}
if (attempts > maxAttempts) {
clearInterval(interval);
console.log('[Artifact Map] Leaflet never loaded');
}
}, 300);
}
waitForMap(function (map) {
var el = document.getElementById("artifact-network-data");
if (!el) {
console.log('[Artifact Map] No Cargo JSON found');
return;
}
var raw = el.textContent.trim();
if (!raw) {
console.log('[Artifact Map] Empty JSON');
return;
}
var data;
try {
data = JSON.parse(raw);
} catch (e) {
console.error('[Artifact Map] JSON parse error:', e);
return;
}
console.log('[Artifact Map] Data loaded:', data);
// Build lookup table using _pageName (CRITICAL FIX)
var lookup = {};
data.forEach(function(item) {
if (item._pageName && item.Latitude && item.Longitude) {
lookup[item._pageName] = [
parseFloat(item.Latitude),
parseFloat(item.Longitude)
];
}
});
console.log('[Artifact Map] Lookup:', lookup);
// Draw connections
data.forEach(function(item) {
if (!item.Related_artifacts || !item._pageName) return;
var fromCoords = lookup[item._pageName];
if (!fromCoords) return;
var relatedList = item.Related_artifacts.split(",");
relatedList.forEach(function(rel) {
var target = rel.trim();
var toCoords = lookup[target];
if (toCoords) {
console.log('[Artifact Map] Drawing line:', item._pageName, '→', target);
L.polyline([fromCoords, toCoords], {
color: "purple",
weight: 3,
opacity: 0.8,
dashArray: "4,6"
}).addTo(map);
} else {
console.log('[Artifact Map] No match for:', target);
}
});
});
console.log('[Artifact Map] Network loaded');
});
});