Modul:LinkSkype
| Dieses Modul ist halbgeschützt. Es wird sehr häufig verwendet oder substituiert. Änderungen können zu einer großen Serverlast führen, und Vandalismus kann sich auf eine Vielzahl von Artikel auswirken. |
Anwendung
Das Modul stellt Funktionen zur Verlinkung von Skype-Adressen bereit.
Versionsbezeichnung auf Wikidata: 2026-03-05
Kommentare müssen hinter der Emailadresse in Klammern angefügt werden. Als Trenner für mehrere Skype-Namen kann das Komma nicht eingesetzt werden, da es Bestandteil des Skype-Namens sein könnte. Vielmehr muss das Semikolon als Trenner benutzt werden.
Benötigte weitere Module
Dieses Modul benötigt folgende weitere Module: Link utilities • Link utilities/i18n
Verwendung in anderen Modulen
Dieses Modul ist notwendig für die Ausführung folgender Module. Bei Anpassungen sollte die Funktionstüchtigkeit der folgenden Module geprüft werden. Benutze dazu auch diese Tracking-Kategorie um Fehler zu finden, die sich dann auf Artikel auswirken:
- vCard
- Modul benötigt das Modul LinkSkype – Wartungskategorie, in der nochmals alle Module gelistet sind, die von diesem Modul abhängig sind.
Regeln für einen Skype-Nutzernamen
- 6 bis 32 Zeichen,
- nur ASCII-Kleinbuchstaben, Ziffern, Punkt (.), Komma (,), Bindestrich (-) und Unterstrich (_),
- erstes Zeichen muss ein Kleinbuchstabe sein.
JavaScript
Zur Anzeige der Links wird ein JavaScript-Skript benötigt:
/**
Support of Skype links. Skype protocol is not supported by the
Mediawiki software, and the link is to be added later
*/
function addSkypeLinks() {
$( '.voy-listing-skype-link' ).each( function() {
var p = $( this ),
t = p.text();
p.html( mw.format( '<a href="skype:$1">$2</a>', t, t.replace( /\?.*$/, '' ) ) );
});
}
Beispiele
| Text | Code | Ergebnis |
|---|---|---|
| nutzer.name | {{#invoke:LinkSkype|linkSkype|nutzer.name}} | nutzer.name |
| nutzer1.name; nutzer2.name | {{#invoke:LinkSkype|linkSkype|nutzer1.name; nutzer2.name}} | nutzer1.name, nutzer2.name |
| nutzer1.name, nutzer2.name | {{#invoke:LinkSkype|linkSkype|nutzer1.name, nutzer2.name}} | nutzer1.name, nutzer2.name Category:Kontakt: Ungültiger Skype-Nutzername Ungültiger Skype-Nutzername |
| info.name (Information); reserv.name?chat (Reservierung) | {{#invoke:LinkSkype|linkSkype|info.name (Information); reserv.name?chat (Reservierung)}} | info.name (Information), reserv.name?chat (Reservierung) |
| info.name (Information); reserv.name?chat (Reservierung); Anderer.Name | {{#invoke:LinkSkype|linkSkype|info.name (Information); reserv.name?chat (Reservierung); Anderer.Name}} | info.name (Information), reserv.name?chat (Reservierung), Anderer.Name Category:Kontakt: Ungültiger Skype-Nutzername Ungültiger Skype-Nutzername |
Fehlersuche
Im Fehlerfall wird neben der Fehlerkategorie auch ein Fehlertext hinter der Email-Adresse ausgegeben.
Beschreibung der Funktionen
function ls.isSkypeName( s )
s: string;
Die Funktion prüft, ob der Skype-Name s gültig ist.
function ls.SkypeLink( m, args )
m: string;args: arguments array;
Die Funktion prüft und bereitet die Verlinkung des Skype-Namens m vor. Die eigentliche Verlinkung wird mit dem JavaScript MediaWiki:Gadget-MarkerUtilities.js durchgeführt.
function ls.linkSkypeSet( args )
args: arguments array;
Die Funktion spaltet eine Liste von Skype-Namen auf und übergibt jeden einzelnen Namen an ls.SkypeLink.
function ls.linkSkype( frame )
frame: frame object;
Die Funktion stellt die Schnittstelle für einen {{#invoke: ...}}-Aufruf zur Verfügung.
function ls.linkSkypeTemplate( frame )
frame: frame object;
Die Funktion stellt die Schnittstelle für einen Vorlagen-Aufruf zur Verfügung.
Bedeutung der Variablen
ls.categories– Array mit gleichnamigen Fehlerausschriften und Kategoriennamen.
ls.delimiters– Array mit Mustern für Trenner unterschiedlicher Telefonnummern. Das Komma muss nicht in dieses Array eingetragen werden.
ls.addNum– Anzahl der sichtbaren, nicht ausgeblendeten Skype-Links. Die überzähligen Links sind aber im HTML-Quelltext enthalten und lassen mit einer Stilvorlage einblenden.
ls.params– Array mit einer Liste der erlaubten Parameter in einem Skype-Link.
Klassenbezeichner
Im HTML-Quelltext werden folgende Klassenbezeichner eingesetzt:
error– Klasse der Fehlerausschrift.voy-listing-skype-link– Kennzeichnung des Skype-Links ohne Kommentar.voy-listing-add-contact– Klassenbezeichner ausgeblendeter Skype-Links. Wenn mehr als zwei Skype-Namen vorhanden sind, so werden die überzähligen Namen ausgeblendet, sind aber im HTML-Quelltext vorhanden.
- Die obige Dokumentation wurde aus der Seite Modul:LinkSkype/Doku eingefügt. (bearbeiten | Versionsgeschichte) Die Kategorien für dieses Modul sollten in der Dokumentation eingetragen werden. Die Interwiki-Links sollten auf Wikidata eingepflegt werden.
- Liste der Unterseiten
-- module variable and administration
local ls = {
moduleInterface = {
suite = 'LinkSkype',
serial = '2026-03-05',
item = 65157314
}
}
-- module import
-- require( 'strict' )
local li = require( 'Module:Link utilities/i18n' )
local lu = require( 'Module:Link utilities' )
-- check single skype name
function ls.isSkypeName( s )
if not s or type( s ) ~= 'string' then
return 0
end
local user = s
local param
local q = s:find( '?', 1, true )
if q then
user = s:sub( 1, q - 1 )
param = s:sub( q + 1, #s )
if not li.params[ param ] then
return 0
end
end
if #user > 32 or #user < 6 then
return 0
end
if not user:match( "^%l[%l%d%.,_%-]+$" ) then
return 0
end
return 1
end
function ls.SkypeLink( m, isDemo )
m = mw.text.trim( m )
if m == '' then -- empty string
return ''
end
local catPrefix = '[[Category:'
if isDemo then
catPrefix = ' [[:Category:'
end
local comment = ''
local t
m, comment = lu.extractComment( m )
m = m:gsub( 'skype:', '' )
if ls.isSkypeName( m ) > 0 then
t = '<span class="voy-listing-skype-link">' .. m ..'</span>'
-- skype: link is performed by a JavaSript: MediaWiki:VCard.js
else
t = m .. catPrefix .. li.categories.invalidSkype
end
if comment ~= '' then
t = t .. ' ' .. comment
end
return t
end
function ls.linkSkypeSet( args )
args.skype = args.skype or args[ 1 ] or ''
if args.skype == '' then
return ''
end
local ns = mw.title.getCurrentTitle().namespace
local isDemo = ns == 10 or ns == 828
-- split separate Skype names
local items = lu.splitItems( args.skype, li.delimiters, ';' )
-- analyse Skype names
local i = 0
local s
local result = ''
for j = 1, #items, 1 do
s = ls.SkypeLink( items[ j ], isDemo )
if s ~= '' then
if result == '' then
result = s
else
if i == li.addSkype then
result = result .. '<span class="voy-listing-add-contact">'
end
result = result .. li.texts.comma .. s
end
i = i + 1
end
end
if i > li.addSkype then
result = result .. '</span>'
end
return result
end
-- #invoke call
function ls.linkSkype( frame )
return ls.linkSkypeSet( frame.args )
end
-- template call
function ls.linkSkypeTemplate( frame )
return ls.linkSkypeSet( frame:getParent().args )
end
return ls