Bearbeiten von „Modul:WLink

Zur Navigation springen Zur Suche springen
Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
local WLink = { suite  = "WLink",
local WLink = { suite  = "WLink",
                 serial = "2019-06-17",
                 serial = "2017-10-14" };
                item  = 19363224 };
--[=[
--[=[
ansiPercent()
ansiPercent()
Zeile 13: Zeile 12:
getLanguage()
getLanguage()
getNamespace()
getNamespace()
getNamespaced()
getPlain()
getPlain()
getProject()
getProject()
getTarget()
getTarget()
getTalkPage()
getTargetPage()
getTargetPage()
getTitle()
getTitle()
getWeblink()
getWeblink()
getWikilink()
isBracketedLink()
isBracketedLink()
isBracketedURL()
isBracketedURL()
Zeile 29: Zeile 25:
isInterwiki()
isInterwiki()
isMedia()
isMedia()
isTalkPage()
isTitledLink()
isTitledLink()
isValidLink()
isValidLink()
isValidLinktext()
isWikilink()
isWikilink()
pageLink()
pageTarget()
wikilink()
wikilink()
failsafe()
failsafe()
Zeile 44: Zeile 36:
-- local globals
-- local globals
local URLutil = false;
local URLutil = false;
local htmlInline = { b      = true,
                    big    = true,
                    code  = true,
                    em    = true,
                    i      = true,
                    kbd    = true,
                    s      = true,
                    samp  = true,
                    small  = true,
                    span  = true,
                    strong = true,
                    sub    = true,
                    sup    = true,
                    tt    = true,
                    var    = true };




Zeile 84: Zeile 58:
     return URLutil;
     return URLutil;
end -- utilURL()
end -- utilURL()
local cleanWikilink = function ( access )
    -- Refine wikilink spacing and decode
    -- Precondition:
    --    access  -- string, with presumable link
    -- Postcondition:
    --    Returns  string, with pretty target
    local r = access:gsub( "_",        " " )
                    :gsub( " ",  " " )
                    :gsub( " ", " " )
                    :gsub( " ",  " " )
                    :gsub( " ",  " " )
                    :gsub( "%s+",      " " );
    r = mw.text.decode( r );
    return r;
end -- cleanWikilink()




Zeile 232: Zeile 188:
             r1 = false;
             r1 = false;
         else
         else
             r1 = cleanWikilink( r1 );
             r1 = r1:gsub( "_",        " " )
                  :gsub( " ",  " " )
                  :gsub( " ", " " )
                  :gsub( " ",  " " )
                  :gsub( " ",  " " )
                  :gsub( "  +",      " " );
            r1 = mw.text.decode( r1 );
         end
         end
     end
     end
Zeile 240: Zeile 202:




local farming = function ( already )
local prefix = function ( ask, ahead )
    -- Retrieve wikifarm project information
    -- Precondition:
    --    already  -- table, with wikilink components
    -- Postcondition:
    --    Returns  table, with wikilink components extended
    local r = already;
    if not r.project then
        local codes  = { mediawiki  = "mw",
                        wikibooks  = "b",
                        wikidata    = "d",
                        wikinews    = "n",
                        wikipedia  = "w",
                        wikiquote  = "q",
                        wikisource  = "s",
                        wikiversity = "v",
                        wikivoyage  = "voy",
                        wiktionary  = "wikt" };
        local server = mw.site.server:gsub( "([/.])m%.",
                                            "%1" )
                                      :gsub( "%.beta%.wmflabs%.org$",
                                            ".org" );
        local site  = server:match( "[/.](%l+)%.org$" );
        r.project = codes[ site ];
        if r.project then
            if not r.lang  and
              r.project ~= "mw"  and  r.project ~= "d" then
                r.lang = server:match( "//(%l+)%." );
            end
        else
            site = server:match( "//(%l+)%.wikimedia%.org$" );
            if site == "commons"  or  site == "meta" then
                r.project = site;
            end
        end
    end
    if r.project  and  r.ns  and
      ( r.project == "commons"  or
        r.project == "d"        or
        r.project == "meta"    or
        r.project == "mw" ) then
        r.language = true;
    end
    return r;
end -- farming()
 
 
 
local prefix = function ( ask )
     -- Interprete prefix of language or project type
     -- Interprete prefix of language or project type
     -- Precondition:
     -- Precondition:
     --    ask    -- string, with presumable prefix
     --    ask    -- string, with presumable prefix
    --    ahead  -- true, if first segment
     -- Postcondition:
     -- Postcondition:
     --    Returns  string,string or nil
     --    Returns  string,string or nil
Zeile 326: Zeile 241:
                     };
                     };
     local s = mw.text.trim( ask );
     local s = mw.text.trim( ask );
     if s ~= "" then
     if s == "" then
        if ahead then
            r1 = "lead";
            r2 = true;
        end
    else
         local p;
         local p;
         s = s:lower();
         s = s:lower();
Zeile 405: Zeile 325:
                 end
                 end
             else
             else
                 s = string.format( "%%%02X", k );
                 s = string.format( "%%%2X", k );
             end
             end
             r = string.format( "%s%s%s",
             r = string.format( "%s%s%s",
Zeile 422: Zeile 342:
     -- Precondition:
     -- Precondition:
     --    adjust  -- string, with URL or domain/path or bracketed link
     --    adjust  -- string, with URL or domain/path or bracketed link
    --    assure  -- boolean, true for secure HTTP
     -- Postcondition:
     -- Postcondition:
     --    Returns  string, with bracketed link
     --    Returns  string, with bracketed link
Zeile 436: Zeile 355:
             host = URLutil.getHost( adjust );
             host = URLutil.getHost( adjust );
             if not host then
             if not host then
                 url = "://" .. adjust;
                 url = "http://" .. adjust;
                if assure then
                    url = "s" .. url;
                end
                url  = "http" .. url;
                 host = URLutil.getHost( url );
                 host = URLutil.getHost( url );
             end
             end
Zeile 529: Zeile 444:
     -- Postcondition:
     -- Postcondition:
     --    Returns  string, with suitable link title
     --    Returns  string, with suitable link title
     local s = mw.text.trim( attempt );
     return attempt:gsub( "\n", " " )
    return s:gsub( "\n", " " )
                  :gsub( "%[", "[" )
            :gsub( "%[", "[" )
                  :gsub( "%]", "]" )
            :gsub( "%]", "]" )
                  :gsub( "|",  "|" );
            :gsub( "|",  "|" );
end -- WLink.getEscapedTitle()
end -- WLink.getEscapedTitle()


Zeile 585: Zeile 499:
         r = find( "file" );
         r = find( "file" );
         if not r then
         if not r then
             local trsl = mw.site.namespaces[ 6 ];
             local trsl = mw.site.namespaces[6];
             r = find( trsl.name );
             r = find( trsl.name );
             if not r then
             if not r then
Zeile 680: Zeile 594:
     return r;
     return r;
end -- WLink.getNamespace()
end -- WLink.getNamespace()
function WLink.getNamespaced( area, attempt )
    -- Retrieve page in namespace
    -- Precondition:
    --    area    -- string or number, with some namespace spec
    --    attempt  -- string, with wikilink or page title or page name
    -- Postcondition:
    --    Returns  page prefixed by namespace,
    --              false if invalid
    local r = false;
    local s = type( area );
    local room;
    if s == "string" then
        room = mw.site.namespaces[ tonumber( area )  or  area ];
    elseif s == "number" then
        room = mw.site.namespaces[ area ];
    end
    if room then
        local m;
        s, m = WLink.getTarget( attempt );
        if not s then
            s = attempt;
        elseif m ~= 2 then
            s = false;
        end
        if s then
            local w = WLink.wikilink( s );
            if w  and  not w.lang  and  not w.project  and
              ( not w.ns  or  w.ns == room.id ) then
                r = string.format( "%s:%s",
                                  room.name, w.title );
            end
        end
    end
    return r;
end -- WLink.getNamespaced()




Zeile 744: Zeile 620:
                 if k > 1 then
                 if k > 1 then
                     n      = n - k;
                     n      = n - k;
                     i      = j + k + 1;
                     i      = j + k;
                     j      = i - 1;
                     j      = i - 1;
                     suffix = r:sub( j );
                     suffix = r:sub( j );
Zeile 792: Zeile 668:
             break; -- while true
             break; -- while true
         end
         end
     end   -- while true
     end -- while true
     return r;
     return r;
end -- WLink.getPlain()
end -- WLink.getPlain()
Zeile 815: Zeile 691:
     return r;
     return r;
end -- WLink.getProject()
end -- WLink.getProject()
function WLink.getTalkPage( attempt )
    -- Retrieve talk page name for attempt, or that page name itself
    -- Precondition:
    --    attempt  -- string, with presumable link somewhere
    -- Postcondition:
    --    Returns  string  or  false
    local r = false;
    local s, m = WLink.getTarget( attempt );
    if m ~= 2  and  attempt then
        s = mw.text.trim( attempt );
    end
    if s  and  s ~= "" then
        local w = mw.title.new( s );
        if w then
            w = w.talkPageTitle;
            if w then
                r = w.prefixedText;
            end
        end
    end
    return r;
end -- WLink.getTalkPage()




Zeile 986: Zeile 837:
     return r;
     return r;
end -- WLink.getWeblink()
end -- WLink.getWeblink()
function WLink.getWikilink( attempt, appear )
    -- Retrieve bracketed link from text
    -- Precondition:
    --    attempt  -- string, with current target, or plain
    --    appear  -- string, with link title, or nil
    -- Postcondition:
    --    Returns  string, with first detected link target
    --              false if nothing found
    local r = WLink.pageTarget( attempt );
    if r then
        if appear then
            local show = WLink.getEscapedTitle( appear );
            if show ~= r  and  show ~= "" then
                r = string.format( "%s|%s", r, show );
            end
        end
        r = string.format( "[[%s]]", r );
    end
    return r;
end -- WLink.getWikilink()




Zeile 1.142: Zeile 970:
     return r;
     return r;
end -- WLink.isMedia()
end -- WLink.isMedia()
function WLink.isTalkPage( attempt )
    -- Does attempt describe a talk page?
    -- Precondition:
    --    attempt  -- string, with presumable link somewhere
    -- Postcondition:
    --    Returns  boolean
    local r = false;
    local s, m = WLink.getTarget( attempt );
    if m ~= 2  and  attempt then
        s = mw.text.trim( attempt );
    end
    if s  and  s ~= "" then
        local w = mw.title.new( s );
        if w then
            r = w.isTalkPage;
        end
    end
    return r;
end -- WLink.isTalkPage()




Zeile 1.203: Zeile 1.009:
     -- Postcondition:
     -- Postcondition:
     --    Returns  boolean
     --    Returns  boolean
     local u, r = WLink.getTarget( attempt );
     local s, r = WLink.getTarget( attempt );
     if r then
     if r then
         if r < 2 then
         r = true;
            if u:find( "''", 1, true ) then
                r = false;
            else
                r = true;
            end
        else
            r = true;
        end
     end
     end
     return r;
     return r;
end -- WLink.isValidLink()
end -- WLink.isValidLink()
function WLink.isValidLinktext( attempt, allow )
    -- Is attempt a plain inline text?
    -- Precondition:
    --    attempt  -- string, with presumable linktext
    --    allow    -- boolean or nil, if multiline permitted
    -- Postcondition:
    --    Returns  boolean
    local r = true;
    local i = attempt:find( "]", 1, true );
    if i then
        r = false;
    else
        r = ( mw.text.unstrip( attempt ) == attempt );
    end
    if r  and  not allow  and  attempt:find( "\n", 1, true ) then
        r = false;
    end
    if r then
        i = attempt:find( "<", 1, true );
        if i then
            local s = mw.ustring.lower( attempt:sub( i ) );
            local sign, skip;
            while i and r do
                skip, sign = s:match( "^([^<]*< *)(%l[%l%d]*)[ /]*.*>" );
                if sign then
                    r = htmlInline[ sign ];
                    if r then
                        i = skip:len() + sign:len() + 1;
                        s = s:sub( i );
                    end
                else
                    i = false;
                end
            end    -- while i and r
        end
    end
    if r then
        local s = attempt .. " ";
        i = s:find( "ISBN ", 1, true );
        if i then
            r = not s:match( "ISBN %d[%-%d]+[%dxX]%W" );
        end
        if r then
            i = s:find( "PMID ", 1, true );
            if i then
                r = not s:match( "PMID %d+%W" );
            end
            if r then
                i = s:find( "RFC ", 1, true );
                if i then
                    r = not s:match( "RFC [1-6]%d?%d?%d?%W" );
                end
            end
        end
    end
    return r or false;
end -- WLink.isValidLinktext()




Zeile 1.289: Zeile 1.027:
     return ( m == 2 );
     return ( m == 2 );
end -- WLink.isWikilink()
end -- WLink.isWikilink()
function WLink.pageLink( attempt, appear, assure )
    -- Create safely standardized wikilink target of a page
    --    attempt  -- string, with presumable link
    --    appear  -- string or true or nil, with link title
    --    assure  -- string or nil, shield against wiki template syntax
    --                "URL" or "WIKI"
    -- Postcondition:
    --    Returns  string with link target
    local r = WLink.pageTarget( attempt, assure );
    if appear then
        local show;
        if type( appear ) == "string" then
            show = appear;
        else
            show = attempt;
        end
        r = string.format( "%s|%s", r, show );
    end
    return r;
end -- WLink.pageLink()
function WLink.pageTarget( attempt, assure )
    -- Create standardized wikilink target of a page
    -- Precondition:
    --    attempt  -- string, with presumable link
    --                        expected to be enclosed in "[[" "]]"
    --                        else wikilink
    --                table, of assignments with { type, value }
    --                        type is one of "lead",
    --                            "project", "lang",
    --                            "ns", "space", "title"
    --    assure  -- string or nil, shield against wiki template syntax
    --                "URL" or "WIKI"
    -- Postcondition:
    --    Returns  string with link target
    local p = type( attempt );
    local s = assure;
    local r;
    if p == "string" then
        p = WLink.wikilink( attempt );
    elseif p == "table" then
        p = attempt;
    else
        p = false;
    end
    if p then
        local site  = p.project;
        local slang = p.lang;
        local lead;
        if p.title:sub( 1, 1 ) == "#" then
            p.title = mw.title.getCurrentTitle().text + p.title;
        end
        if p.ns then
            if not slang then
                p = farming( p );
            end
            if p.lang  and
              p.lang ~= mw.language.getContentLanguage():getCode() then
                p.language = true;
            end
            if p.language then
                p.space = mw.site.namespaces[ p.ns ].canonicalName;
            end
            lead = ( p.ns == 6  or  p.ns == 14 );
        end
        if slang then
            lead = true;
        end
        if s == "WIKI" then
            if not site  and
              ( lead  or
                ( not p.space  and
                  p.title and p.title:match( "^[*;]" ) ) ) then
                p    = farming( p );
                site  = p.project;
                slang = p.lang;
            end
            s = false;
        end
        if site then
            r = site .. ":";
        elseif lead then
            r = ":";
        else
            r = "";
        end
        if slang then
            r = string.format( "%s%s:", r, slang );
        end
        if p.space then
            r = string.format( "%s%s:", r, p.space );
        end
        if p.title then
            r = r .. p.title;
        end
        if r == "" then
            r = false;
        end
    end
    if not r then
        p = { lang = mw.language.getContentLanguage():getCode() };
        if s == "WIKI" then
            r = WLink.pageTarget( p, s );
            s = false;
        else
            r = string.format( ":%s:", p.lang );
        end
    end
    if s == "URL"  and  r:match( "^[*#;:]" ) then
        r = mw.uri.encode( r:sub( 1, 1 ) )  ..  r:sub( 2 );
    end
    return r;
end -- WLink.pageTarget()




Zeile 1.418: Zeile 1.038:
     -- Postcondition:
     -- Postcondition:
     --    Returns  table or false
     --    Returns  table or false
     --              table of assignments with { type, value }
     --              table of assignments with { type, value}
     --                      type is one of "lead",
     --                      type is one of "lead",
     --                          "project", "lang",
     --                          "project", "lang",
     --                          "ns", "space", "title"
     --                          "ns", "space", "title"
     --              false if nothing found
     --              false if nothing found
     local s = contentWikilink( attempt or "" );
     local s = contentWikilink( attempt );
     local got, n, r;
     local got, n, r;
     if not s then
     if not s then
         s = attempt;
         s = attempt;
    end
    if s:find( "%", 1, true ) then
        s = mw.uri.decode( s, "PATH" );
     end
     end
     i = s:find( "|", 1, true );
     i = s:find( "|", 1, true );
Zeile 1.442: Zeile 1.059:
         local j, k, o, v;
         local j, k, o, v;
         r = { title = "" };
         r = { title = "" };
        while ( got[ 1 ] == "" ) do
            r.lead = true;
            table.remove( got, 1 );
            n = n - 1;
        end    -- while  got[ 1 ] == ""
         if n > 4 then
         if n > 4 then
             k = 4;
             k = 4;
         elseif n > 1 then
         else
             k = n - 1;
             k = n - 1;
        else
            k = 1;
         end
         end
         j = k;
         j = k;
Zeile 1.458: Zeile 1.068:
             s = mw.text.trim( got[ i ] );
             s = mw.text.trim( got[ i ] );
             if s ~= "" then
             if s ~= "" then
                 o = mw.site.namespaces[ s ];
                 o = mw.site.namespaces[ mw.text.trim( got[ i ] ) ];
                 if o then
                 if o then
                     r.ns    = o.id;
                     r.ns    = o.id;
Zeile 1.469: Zeile 1.079:
         end -- for i
         end -- for i
         for i = 1, j do
         for i = 1, j do
             o, v = prefix( got[ i ] );
             o, v = prefix( got[ i ],  ( i == 1 ) );
             if o then
             if o then
                 if r[ o ] then
                 if r[ o ] then
Zeile 1.475: Zeile 1.085:
                     break; -- for i
                     break; -- for i
                 else
                 else
                    if i >= k then
                        k = i + 1;
                    end
                     r[ o ] = v;
                     r[ o ] = v;
                 end
                 end
             else
             else
                if i == 1  and  r.ns then
                    r.ns    = false;
                    r.space = false;
                end
                 k = i;
                 k = i;
                 break; -- for i
                 break; -- for i
             end
             end
         end -- for i
         end -- for i
         if k > 0 then
         for i = k, n do
            for i = k, n do
            r.title = r.title .. got[ i ];
                r.title = r.title .. got[ i ];
            if i < n then
                if i < n then
                r.title = r.title .. ":";
                    r.title = r.title .. ":";
            end
                end
        end -- for i
            end -- for i
        end
     end
     end
    r.title = cleanWikilink( r.title );
     if r.lead and
     if r.lead and
       ( r.project  or
       ( r.project or  not r.title or
         ( not r.lang  and  r.ns ~= 6  and  r.ns ~= 14 ) ) then
         ( not r.lang  and  r.ns ~= 6  and  r.ns ~= 14 ) ) then
         r.lead = false;
         r.lead = false;
Zeile 1.512: Zeile 1.112:
     -- Retrieve versioning and check for compliance
     -- Retrieve versioning and check for compliance
     -- Precondition:
     -- Precondition:
     --    assert  -- string, with required version or "wikidata",
     --    assert  -- string, with required version, or false
    --                or false
     -- Postcondition:
     -- Postcondition:
     --    Returns  string with appropriate version, or false
     --    Returns  string with appropriate version, or false
    local since = assert;
     local r;
     local r;
     if since == "wikidata" then
     if assert and  assert > WLink.serial then
        local item = WLink.item;
        r = false;
        since = false;
     else
        if type( item ) == "number" and  item > 0 then
         r = WLink.serial;
            local ent = mw.wikibase.getEntity( string.format( "Q%d",
                                                              item ) );
            if type( ent ) == "table" then
                local vsn = ent:formatPropertyValues( "P348" );
                if type( vsn ) == "table"  and
                  type( vsn.value ) == "string"  and
                  vsn.value ~= "" then
                    r = vsn.value;
                end
            end
        end
     end
    if not r then
         if not since  or  since <= WLink.serial then
            r = WLink.serial;
        else
            r = false;
        end
     end
     end
     return r;
     return r
end -- WLink.failsafe()
end -- WLink.failsafe()


Zeile 1.558: Zeile 1.138:
     local s = false;
     local s = false;
     local r = false;
     local r = false;
     local safe, space;
     local space;
     for k, v in pairs( frame.args ) do
     for k, v in pairs( frame.args ) do
         if k == 1 then
         if k == 1 then
Zeile 1.566: Zeile 1.146:
                 s = mw.text.trim( v );
                 s = mw.text.trim( v );
             end
             end
         elseif ( k == 2  and
         elseif action == "ansiPercentand k == "space" then
                ( action == "getNamespacedor
                  action == "getWikilink" or
                  action == "pageLink" ) )    or
              ( k == "space" and  action == "ansiPercent" ) then
            v = mw.text.trim( v );
             if v ~= "" then
             if v ~= "" then
                 space = v;
                 space = v;
             end
             end
        elseif k == "safe"  and  action == "pageLink" then
            v = mw.text.trim( v );
            if v ~= "" then
                safe = v;
            end
        elseif k == "lines"  and  action == "isValidLinktext" then
            space = ( k == "1" );
         elseif k ~= "template" then
         elseif k ~= "template" then
             lucky = false;
             lucky = false;
Zeile 1.594: Zeile 1.162:
     if lucky then
     if lucky then
         if s or lone then
         if s or lone then
             lucky, r = pcall( WLink[ action ],  s,  space,  safe );
             lucky, r = pcall( WLink[ action ],  s,  space );
         else
         else
             r = "Parameter missing";
             r = "Parameter missing";
Zeile 1.609: Zeile 1.177:
         end
         end
     else
     else
         local e = mw.html.create( "span" );
         r = string.format( "<span class=\"error\">%s</span>", r );
        r = tostring( e:addClass( "error" )
                      :wikitext( r ) );
     end
     end
     return r;
     return r;
Zeile 1.653: Zeile 1.219:
p.getNamespace = function ( frame )
p.getNamespace = function ( frame )
     return tostring( Template( frame, "getNamespace" ) );
     return tostring( Template( frame, "getNamespace" ) );
end
p.getNamespaced = function ( frame )
    return tostring( Template( frame, "getNamespaced" ) );
end
end
p.getPlain = function ( frame )
p.getPlain = function ( frame )
Zeile 1.662: Zeile 1.225:
p.getProject = function ( frame )
p.getProject = function ( frame )
     return Template( frame, "getProject" );
     return Template( frame, "getProject" );
end
p.getTalkPage = function ( frame )
    return Template( frame, "getTalkPage" );
end
end
p.getTarget = function ( frame )
p.getTarget = function ( frame )
Zeile 1.677: Zeile 1.237:
p.getWeblink = function ( frame )
p.getWeblink = function ( frame )
     return Template( frame, "getWeblink" );
     return Template( frame, "getWeblink" );
end
p.getWikilink = function ( frame )
    return Template( frame, "getWikilink" );
end
end
p.isBracketedLink = function ( frame )
p.isBracketedLink = function ( frame )
Zeile 1.701: Zeile 1.258:
p.isMedia = function ( frame )
p.isMedia = function ( frame )
     return Template( frame, "isMedia" );
     return Template( frame, "isMedia" );
end
p.isTalkPage = function ( frame )
    return Template( frame, "isTalkPage" );
end
end
p.isTitledLink = function ( frame )
p.isTitledLink = function ( frame )
Zeile 1.710: Zeile 1.264:
p.isValidLink = function ( frame )
p.isValidLink = function ( frame )
     return Template( frame, "isValidLink" );
     return Template( frame, "isValidLink" );
end
p.isValidLinktext = function ( frame )
    return Template( frame, "isValidLinktext" );
end
end
p.isWeblink = function ( frame )
p.isWeblink = function ( frame )
Zeile 1.719: Zeile 1.270:
p.isWikilink = function ( frame )
p.isWikilink = function ( frame )
     return Template( frame, "isWikilink" );
     return Template( frame, "isWikilink" );
end
p.pageLink = function ( frame )
    return Template( frame, "pageLink" );
end
end
p.failsafe = function ( frame )
p.failsafe = function ( frame )

Bitte beachte, dass alle Beiträge im Regiowiki von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können. Reiche hier keine Texte ein, falls Du nicht willst, dass diese ohne Einschränkung geändert werden können.

Mit dem Speichern dieser Seite stimmst Du den Nutzungsbedingungen zu und versicherst, dass Du den Beitrag selbst verfasst hast bzw. dass er keine fremden Rechte verletzt, und willigst ein, ihn unter der Creative Commons Attribution/Share-Alike Lizenz 3.0 zu veröffentlichen. Übertrage ohne Genehmigung keine urheberrechtlich geschützten Inhalte!

Du stimmst einer Autorennennung mindestens durch URL oder Verweis auf den Artikel zu. Wenn Du nicht möchtest, dass Dein Text weiterbearbeitet und weiterverbreitet wird bzw. den Nutzungsbedingungen nicht zustimmst, dann speichere ihn nicht.

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)

[] [[]] | {{}} {{{}}} “” ‘’ «» ‹› „“ ‚‘ · × ° § ~~~~ <s></s> <small></small> <sup></sup> <sub></sub> <tt></tt> <code></code> <pre></pre> &nbsp; [[Kategorie:]] [[Datei:]] [[Media:]] {{DEFAULTSORT:}} {{NAMESPACE}} {{PAGENAME}} #REDIRECT[[]] <gallery></gallery> <!-- --> <nowiki></nowiki> <code><nowiki></nowiki></code> <includeonly></includeonly> <noinclude></noinclude> <onlyinclude></onlyinclude> <translate></translate> <tvar|></> <languages/>