Module:Navigation-is

There are no reviewed versions of this page, so it may not have been checked for adherence to standards.

Documentation for this module may be created at Module:Navigation-is/doc

-- Siblings are indexed by a canonical name.
local siblings = {
    commons     = { name = "[[Commons]]", logo = "Commons-logo.svg", suffix = "", what = "er með margmiðlunarefni sem tengist" },
    meta        = { name = "the Wikimedia Community wiki", logo = "Wikimedia Community Logo.svg", suffix = "", what = "Wikimedia Community pages" },
    wikibooks   = { name = "[[Wikibækur]]", logo = "Wikibooks-logo-is.png", suffix = "", what = "eru með efni sem tengist" },
    wikiquote   = { name = "[[Wikivitnun]]", logo = "Wikiquote-logo.png", suffix = "", what = "er með safn tilvitnana á síðunni" },
    wikipedia   = { name = "[[Wikipedia]]", logo = "Wikipedia-logo-v2.svg", suffix = "", what = "hefur upp á að bjóða efni tengt" },
    wikisource  = { name = "Á [[Wikiheimild]]", logo = "Wikisource-logo.svg", suffix = "", what = "er að finna texta sem tengist" },
    wiktionary  = { name = "[[Wikiorðabók]]", logo = "Wiktionary-logo-is.png", suffix = "", what = "er með skilgreiningu á orðinu" },
    wikinews    = { name = "[[Wikifréttir]]", logo = "Wikinews-logo.svg", suffix = "", what = "eru með grein sem tengist" },
    wikispecies = { name = "[[Wikilífverur]]", logo = "Wikispecies-logo.svg", suffix = "", what = "eru með efni sem tengist" },
    wikiversity = { name = "[[Wikiháskóli]]", logo = "Wikiversity-logo.svg", suffix = "", what = " er með efni sem tengist" },
    mediawiki   = { name = "Mediawiki", logo = "Mediawiki.png", suffix = "", what = "MediaWiki information" },
    outreachwiki= { name = "Wikimedia Outreach",  logo = "Wikimedia Outreach.png", suffix = "", what = "outreach" },
    incubator   = { name = "the Wikimedia Incubator", logo = "Incubator-notext.svg", suffix = "", what = "incubated projects" },
    foundation  = { name = "the Wikimedia Foundation wiki", logo = "Incubator-notext.svg", suffix = "", what = "Wikimedia Foundation stuff" },
    { name = "Wikimedia", logo = "Wikimedia-logo.svg", suffix = "", what = "stuff" },
}

-- The interwiki map maps an interwiki prefix onto a canonical name.
-- The actual interwiki map used by the servers is at [[m:interwiki map]].
-- This map contains the subset of projects that are Wikimedia Foundation projects.
-- It also contains some prefixes that are used in templates but that aren't actually valid interwiki prefixes.
local interwiki_map = {
    commons = "commons",
    meta = "meta",
    m = "meta",
    metawiki = "meta",
    wikibooks = "wikibooks",
    b = "wikibooks",
    wb = "wikibooks",
    wbk = "wikibooks",
    wikiquote = "wikiquote",
    q = "wikiquote",
    wqt = "wikiquote",
    quote = "wikiquote",
    wikipedia = "wikipedia",
    w = "wikipedia",
    wp = "wikipedia",
    wikisource = "wikisource",
    s = "wikisource",
    ws = "wikisource",
    source = "wikisource",
    wiktionary = "wiktionary",
    d = "wiktionary",
    wkt = "wiktionary",
    wikt = "wiktionary",
    wdy = "wiktionary",
    wikinews = "wikinews",
    n = "wikinews",
    wnw = "wikinews",
    news = "wikinews",
    wikispecies = "wikispecies",
    species = "wikispecies",
    wikiversity = "wikiversity",
    v = "wikiversity",
    wvy = "wikiversity",
    mw = "wikiversity",
    outreachwiki = "outreachwiki",
    outreach = "outreachwiki",
}

local z = {}

-- This is used by templates {{wiktionary}}, {{wikibooks}}, {{wikisource}}, {{commons}}, {{wikiquote}}, {{meta}}, {{wikispecies}}, and {{wikinews}}.
-- It entirely replaces template {{sister}}, which is now obsolete.
function z.sibling(frame)
    local pframe = frame:getParent()
    local args = pframe.args -- the arguments passed TO the template, in the wikitext that instantiates the template
    local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
    
    local pagename = mw.title.getCurrentTitle().text
    local wiki = config.interwiki
    local interwiki = interwiki_map[wiki] or interwiki_map[1]
    local Position = args.position or "right"
    local sibling = siblings[interwiki] or siblings[1]

    local link = "[[" .. interwiki .. ":Special:Search/" .. ( args[1] or pagename ) .. "|" .. ( args[2] or pagename ) .. "]]"

    local text = {}
    local icon = "[[File:" .. sibling.logo .. "|40px|left|link=|alt=]] "
    local linksdiv = '<div style="margin-left:50px;">' .. link .. '</span>';
    local div = '<div style="margin-left:10px;">' .. sibling.name .. " " .. sibling.what .. ": " .. linksdiv .. '</span>'

    local Left = "t" .. Position
    return '<div style="float: right; width: 222px; font-size: 85%; border:solid #ccc 1px; margin:0.5em 0.5em 0.5em 0">' .. icon .. " " .. div ..'</div>'
end

return z