|
|
| Line 33: |
Line 33: |
|
| |
|
|
| |
|
| // -------------------------
| | mw.loader.load('https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@main/dist/en/v7.0.0/legacy/ol.js'); |
| // Load Leaflet
| | mw.loader.load('/maps/elemara/elemara-map.js'); |
| // -------------------------
| |
| mw.loader.load('https://unpkg.com/leaflet@1.9.4/dist/leaflet.js'); | |
| mw.loader.load('/maps/orethil/leaflet-map.js');
| |
| | |
| | |
| // -------------------------
| |
| // Leaflet popup cleanup / wiki-link conversion
| |
| // -------------------------
| |
| mw.loader.using(['jquery'], function() {
| |
| function processPopup($popup) {
| |
| // 1. Update any <strong> title tags that are not already links.
| |
| $popup.find('strong').each(function() {
| |
| var titleText = $(this).text().trim();
| |
| if (titleText.length > 0 && $(this).find('a').length === 0) {
| |
| var link = $('<a>')
| |
| .attr('href', '/' + encodeURIComponent(titleText.replace(/ /g, '_')))
| |
| .attr('target', '_blank')
| |
| .text(titleText);
| |
| $(this).html(link);
| |
| }
| |
| });
| |
| | |
| // 2. Get the popup's HTML content.
| |
| var htmlContent = $popup.html();
| |
| | |
| // 3. Replace wiki-style link markup [PageName] with clickable links.
| |
| var newContent = htmlContent.replace(/\[([^\]]+)\]/g, function(match, p1) {
| |
| if (p1.trim().toLowerCase().startsWith('img:')) {
| |
| return match;
| |
| }
| |
| var pageName = p1.replace(/ /g, '_');
| |
| return '<a href="/' + encodeURIComponent(pageName) + '" target="_blank">' + p1 + '</a>';
| |
| });
| |
| | |
| // 4. Replace custom image markup [img:...] with image element.
| |
| newContent = newContent.replace(/\[img:([^\]]+)\]/gi, function(match, p1) {
| |
| var imageFile = p1.trim();
| |
| var src;
| |
| | |
| if (/^https?:\/\//.test(imageFile)) {
| |
| src = imageFile;
| |
| } else {
| |
| src = '/images/' + encodeURIComponent(imageFile);
| |
| }
| |
| | |
| return '<img src="' + src + '" alt="' + imageFile + '" style="max-width:50%; display:block; margin-top:5px; margin-bottom:5px;">';
| |
| });
| |
| | |
| // 5. Update the popup content.
| |
| $popup.html(newContent);
| |
| }
| |
| | |
| // Use a MutationObserver to detect when new popup content is added.
| |
| var observer = new MutationObserver(function(mutations) {
| |
| mutations.forEach(function(mutation) {
| |
| if (mutation.addedNodes) {
| |
| $(mutation.addedNodes).each(function() {
| |
| var $node = $(this);
| |
| | |
| if ($node.hasClass('leaflet-popup-content')) {
| |
| processPopup($node);
| |
| } else {
| |
| $node.find('.leaflet-popup-content').each(function() {
| |
| processPopup($(this));
| |
| });
| |
| }
| |
| });
| |
| }
| |
| });
| |
| });
| |
| | |
| observer.observe(document.body, { childList: true, subtree: true });
| |
| });
| |