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: 2023-12-08
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.
Wartungskategorie
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.listing-skype-link
– Kennzeichnung des Skype-Links ohne Kommentar.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 = '2023-12-08',
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="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="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