MediaWiki:Common.js: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Markierung: Zurückgesetzt |
Markierung: Zurückgesetzt |
||
| Zeile 87: | Zeile 87: | ||
}); | }); | ||
})(); | })(); | ||
/* global mw, $ */ | /* global mw, $ */ | ||
(function () { | (function () { | ||
'use strict'; | 'use strict'; | ||
$.when( $.ready ).then(function () { | $.when( $.ready ).then(function () { | ||
// 1) Mögliche Einfügepunkte (Timeless/Vector/MonoBook) | |||
var content = | |||
document.getElementById('mw-content-text') || | |||
document.getElementById('mw-content') || | |||
document.getElementById('bodyContent') || | |||
document.getElementById('content'); | |||
if (!content) { | |||
console.warn('[ad-box] Kein Content-Container gefunden.'); | |||
return; | |||
} | |||
// Doppelt vermeiden | |||
if (document.getElementById('ad-box')) { | |||
console.log('[ad-box] existiert bereits'); | |||
return; | |||
} | |||
// 2) Box bauen | |||
var box = document.createElement('aside'); | var box = document.createElement('aside'); | ||
box.id = 'ad-box'; | box.id = 'ad-box'; | ||
box.setAttribute('role','complementary'); | box.setAttribute('role','complementary'); | ||
box.setAttribute('aria-label','Werbung'); | box.setAttribute('aria-label','Werbung'); | ||
// Notfall-Styles, falls Common.css noch nicht greift (damit du es SOFORT siehst) | |||
box.style.cssText = 'float:right;width:300px;margin:0 0 1rem 1rem;background:#fffef7;border:1px solid #e5dfb3;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.06);font-size:90%;'; | |||
var header = document.createElement('div'); | var header = document.createElement('div'); | ||
header.className = 'ad-header'; | header.className = 'ad-header'; | ||
header.innerHTML = '<span class="ad-badge">Anzeige</span> <span>Unterstütze dieses Wiki</span>'; | header.innerHTML = '<span class="ad-badge" style="background:#ffea9e;border:1px solid #e0c200;padding:2px 6px;border-radius:4px;font-weight:700;text-transform:uppercase;">Anzeige</span> <span style="font-weight:700;margin-left:.5em;">Unterstütze dieses Wiki</span>'; | ||
var body = document.createElement('div'); | var body = document.createElement('div'); | ||
body.className = 'ad-body'; | body.className = 'ad-body'; | ||
body.style.padding = '.6em .8em'; | |||
// Amazon-URL | // 3) Amazon-URL dynamisch (Spamfilter umgehen) | ||
var amazonHost = 'amazon.' + 'de'; | var amazonHost = 'amazon.' + 'de'; | ||
var amazonBase = 'https://www.' + amazonHost + '/'; | var amazonBase = 'https://www.' + amazonHost + '/'; | ||
var partnerTag = 'rettungsdie00-21'; // <-- | var partnerTag = 'rettungsdie00-21'; // <-- anpassen | ||
var u = new URL(amazonBase); | var u = new URL(amazonBase); | ||
| Zeile 119: | Zeile 136: | ||
var amazonUrl = u.toString(); | var amazonUrl = u.toString(); | ||
// 4) Inhalt | |||
var html = '' + | var html = '' + | ||
'<ul>' + | '<ul style="list-style:none;margin:.2em 0;padding:0">' + | ||
' <li><a href="' + amazonUrl + '" target="_blank" rel="nofollow sponsored noopener noreferrer">Bei Amazon einkaufen (Affiliate)</a></li>' + | ' <li style="margin:.35em 0"><a href="' + amazonUrl + '" target="_blank" rel="nofollow sponsored noopener noreferrer">Bei Amazon einkaufen (Affiliate)</a></li>' + | ||
' <li><a href="https://www.paypal.me/rettungsdienstblog" target="_blank" rel="nofollow noopener noreferrer">PayPal – jetzt unterstützen</a></li>' + | ' <li style="margin:.35em 0"><a href="https://www.paypal.me/rettungsdienstblog" target="_blank" rel="nofollow noopener noreferrer">PayPal – jetzt unterstützen</a></li>' + | ||
' <li><a href="/index.php?title=Spezial:Zufällige_Seite">Zufälliger Artikel →</a></li>' + | ' <li style="margin:.35em 0"><a href="/index.php?title=Spezial:Zufällige_Seite">Zufälliger Artikel →</a></li>' + | ||
'</ul>' + | '</ul>' + | ||
'<div style="font-size:85%; color:#555; margin-top:.5em;">' + | '<div style="font-size:85%; color:#555; margin-top:.5em;">' + | ||
| Zeile 132: | Zeile 150: | ||
box.appendChild(header); | box.appendChild(header); | ||
box.appendChild(body); | box.appendChild(body); | ||
content.insertBefore(box, content.firstChild); | |||
// 5) Einfügen – zuerst im Content oben | |||
try { | |||
content.insertBefore(box, content.firstChild); | |||
console.log('[ad-box] eingefügt in', content.id || content.className); | |||
} catch (e) { | |||
console.warn('[ad-box] insertBefore fehlgeschlagen, versuche Fallback:', e); | |||
(content.appendChild || function(){ })(box); | |||
} | |||
// 6) Hard-Check: Wenn du ihn immer noch nicht siehst, als Test FIXIERT rechts oben einblenden | |||
// Kommentiere die nächsten 5 Zeilen EIN, um zu testen: | |||
/* | |||
box.style.position = 'fixed'; | |||
box.style.right = '1rem'; | |||
box.style.top = '6rem'; | |||
box.style.zIndex = 1000; | |||
console.log('[ad-box] testweise fixed positioniert'); | |||
*/ | |||
}); | }); | ||
})(); | })(); | ||
Version vom 7. November 2025, 21:45 Uhr
/* global mw, $ */
(function () {
'use strict';
$.when( mw.loader.using( [ 'mediawiki.api', 'mediawiki.util' ] ), $.ready ).then( function () {
// 1) Referenz-Portlet finden (Werkzeuge = p-tb). Daran hängen wir unseren Block direkt DARUNTER an.
var tools = document.getElementById('p-tb') || document.getElementById('p-navigation');
if ( !tools ) {
console.warn('[NewPages] Referenz-Portlet nicht gefunden.');
return;
}
// 2) Eigenen Portlet-Block erstellen – Klassen/Struktur von bestehendem Portlet ableiten
var block = document.createElement('div');
block.id = 'p-newpages';
// Klassen vom Werkzeuge-Portlet übernehmen (wirkt in Timeless/Vector/MonoBook sauber)
block.className = tools.className || 'mw-portlet';
// passende Überschrift (h3 oder h2 – je nach Skin) ermitteln
var headingTag = (tools.querySelector('h3,h2') || { tagName: 'H3' }).tagName;
var heading = document.createElement(headingTag);
heading.textContent = 'Neueste Beiträge';
// Body + UL wie bei anderen Portlets
var body = document.createElement('div');
body.className = 'body';
var list = document.createElement('ul');
body.appendChild(list);
block.appendChild(heading);
block.appendChild(body);
// Block direkt UNTERHALB von "Werkzeuge" einfügen
if (tools.insertAdjacentElement) {
tools.insertAdjacentElement('afterend', block);
} else if (tools.parentNode) {
tools.parentNode.insertBefore(block, tools.nextSibling);
}
// 3) Einträge via API laden
var api = new mw.Api();
api.get({
action: 'query',
list: 'recentchanges',
rctype: 'new',
rcprop: 'title|timestamp',
rcnamespace: 0, // nur Artikel
rcshow: '!bot|!redirect', // Bots & Weiterleitungen ausblenden
rclimit: 3,
format: 'json'
}).done(function (data) {
var items = (data.query && data.query.recentchanges) || [];
// Helper: <li><a/></li> hinzufügen
function addItem(href, text, title) {
var li = document.createElement('li');
var a = document.createElement('a');
a.href = href;
a.textContent = text;
if (title) a.title = title;
li.appendChild(a);
list.appendChild(li);
}
if (!items.length) {
addItem(mw.util.getUrl('Special:NewPages'), 'Keine neuen Seiten', 'Zur vollständigen Liste');
return;
}
for (var i = 0; i < items.length; i++) {
var rc = items[i];
var href = mw.util.getUrl(rc.title);
var tip = new Date(rc.timestamp).toLocaleString('de-DE', { dateStyle: 'medium', timeStyle: 'short' });
addItem(href, rc.title, tip);
}
// Abschluss-Link
addItem(mw.util.getUrl('Special:NewPages'), 'Alle neuen Seiten →', 'Zur vollständigen Liste');
}).fail(function (err) {
console.error('[NewPages] API-Fehler:', err);
var li = document.createElement('li');
li.textContent = 'Fehler beim Laden';
list.appendChild(li);
});
});
})();
/* global mw, $ */
(function () {
'use strict';
$.when( $.ready ).then(function () {
// 1) Mögliche Einfügepunkte (Timeless/Vector/MonoBook)
var content =
document.getElementById('mw-content-text') ||
document.getElementById('mw-content') ||
document.getElementById('bodyContent') ||
document.getElementById('content');
if (!content) {
console.warn('[ad-box] Kein Content-Container gefunden.');
return;
}
// Doppelt vermeiden
if (document.getElementById('ad-box')) {
console.log('[ad-box] existiert bereits');
return;
}
// 2) Box bauen
var box = document.createElement('aside');
box.id = 'ad-box';
box.setAttribute('role','complementary');
box.setAttribute('aria-label','Werbung');
// Notfall-Styles, falls Common.css noch nicht greift (damit du es SOFORT siehst)
box.style.cssText = 'float:right;width:300px;margin:0 0 1rem 1rem;background:#fffef7;border:1px solid #e5dfb3;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.06);font-size:90%;';
var header = document.createElement('div');
header.className = 'ad-header';
header.innerHTML = '<span class="ad-badge" style="background:#ffea9e;border:1px solid #e0c200;padding:2px 6px;border-radius:4px;font-weight:700;text-transform:uppercase;">Anzeige</span> <span style="font-weight:700;margin-left:.5em;">Unterstütze dieses Wiki</span>';
var body = document.createElement('div');
body.className = 'ad-body';
body.style.padding = '.6em .8em';
// 3) Amazon-URL dynamisch (Spamfilter umgehen)
var amazonHost = 'amazon.' + 'de';
var amazonBase = 'https://www.' + amazonHost + '/';
var partnerTag = 'rettungsdie00-21'; // <-- anpassen
var u = new URL(amazonBase);
u.searchParams.set('tag', partnerTag);
var amazonUrl = u.toString();
// 4) Inhalt
var html = '' +
'<ul style="list-style:none;margin:.2em 0;padding:0">' +
' <li style="margin:.35em 0"><a href="' + amazonUrl + '" target="_blank" rel="nofollow sponsored noopener noreferrer">Bei Amazon einkaufen (Affiliate)</a></li>' +
' <li style="margin:.35em 0"><a href="https://www.paypal.me/rettungsdienstblog" target="_blank" rel="nofollow noopener noreferrer">PayPal – jetzt unterstützen</a></li>' +
' <li style="margin:.35em 0"><a href="/index.php?title=Spezial:Zufällige_Seite">Zufälliger Artikel →</a></li>' +
'</ul>' +
'<div style="font-size:85%; color:#555; margin-top:.5em;">' +
' * Als Amazon-Partner verdienen wir an qualifizierten Verkäufen.' +
'</div>';
body.innerHTML = html;
box.appendChild(header);
box.appendChild(body);
// 5) Einfügen – zuerst im Content oben
try {
content.insertBefore(box, content.firstChild);
console.log('[ad-box] eingefügt in', content.id || content.className);
} catch (e) {
console.warn('[ad-box] insertBefore fehlgeschlagen, versuche Fallback:', e);
(content.appendChild || function(){ })(box);
}
// 6) Hard-Check: Wenn du ihn immer noch nicht siehst, als Test FIXIERT rechts oben einblenden
// Kommentiere die nächsten 5 Zeilen EIN, um zu testen:
/*
box.style.position = 'fixed';
box.style.right = '1rem';
box.style.top = '6rem';
box.style.zIndex = 1000;
console.log('[ad-box] testweise fixed positioniert');
*/
});
})();